2009-04-28 57 views
4

變量中類,我有一些文件test.php的如何包含在PHP

<?PHP 
    $config_key_security = "test"; 
?> 

和我有一些類

test5.php

include test.php 
     class test1 { 
       function test2 { 
        echo $config_key_security; 
      } 
     } 

回答

16
class test1 { 
      function test2 { 
       global $config_key_security; 
       echo $config_key_security; 
     } 
    } 

class test1 { 
      function test2 { 
       echo $GLOBALS['config_key_security']; 
     } 
    } 

讓你的類依賴全局變量並不是最好的實踐 - 你應該考慮把它傳遞給構造函數。

7

另一種選擇是在test2方法中包含test.php。這將使變量的作用域爲本地函數。

class test1 { 
      function test2 { 
       include('test.php'); 
       echo $config_key_security; 
     } 
    } 

儘管如此,仍然不是一個好的做法。

+1

只要它不被濫用,這是一個非常有用的方法允許類的運行時配置。它還允許您通過拉出函數的「模板」部分並將其放入包含中來將程序邏輯與演示分開。 – 2009-04-28 12:08:29

2

使用__construct()方法。

include test.php; 
$obj = new test1($config_key_security); 
$obj->test2(); 

class test1 
{ 
    function __construct($config_key_security) { 
     $this->config_key_security = $config_key_security; 
    } 

    function test2() { 
     echo $this->config_key_security; 
    } 
} 
7

讓你的配置文件創建一個配置項目數組。然後在你的類的構造函數中包含該文件,並將其值作爲成員變量保存。這樣,所有的配置設置都可用於課程。

test.php的:

<? 
$config["config_key_security"] = "test"; 
$config["other_config_key"] = true; 
... 
?> 

test5.php:

<? 
class test1 { 
    private $config; 

    function __construct() { 
     include("test.php"); 
     $this->config = $config; 
    } 

    public function test2{ 
     echo $this->config["config_key_security"]; 
    } 
} 
?> 
+0

這應該是選擇的答案 – lloop 2017-10-04 16:57:35

1

我喜歡做的方式是這樣的:

在test.php的

define('CONFIG_KEY_SECURITY', 'test'); 

然後:

在test5.php

include test.php 
    class test1 { 
      function test2 { 
       echo CONFIG_KEY_SECURITY; 
     } 
    } 
1

你可以使用$ GLOBALS變量數組,並把你的全局變量元素吧。

例如: 文件:configs.php

<?PHP 
    $GLOBALS['config_key_security'] => "test"; 
?> 

文件:MyClass.php

<?php 
require_once 'configs.php'; 
class MyClass { 
    function test() { 
    echo $GLOBALS['config_key_security']; 
    } 
}