如何在php类中包含php文件
我有一个带有数组的php,即如何在php类中包含php文件,php,Php,我有一个带有数组的php,即 $var = array( "var" => "var value", "var2" => "var value1" ); 还有另一个类文件,即 class class1{ function fnc1(){ echo $var['var2']; //rest of function here } } 现在,如何在函数fnc1()的类文件中获取$var['var'],您可以将其作为参数传递,或者使用
$var = array(
"var" => "var value",
"var2" => "var value1"
);
还有另一个类文件,即
class class1{
function fnc1(){
echo $var['var2'];
//rest of function here
}
}
现在,如何在
函数fnc1()
的类文件中获取$var['var']
,您可以将其作为参数传递,或者使用全局
关键字将其放入当前范围。
但是,不鼓励使用global,请尝试将其作为参数传递。您可以在包含的文件中使用
global$var
,但这实际上是一种不好的做法,因为在包含的文件之前,另一个脚本可能会重新定义$var
的值/类型
例如:
class class1{
function fnc1(){
global $var;
echo $var['var2'];
//rest of function here
}
}
更好的解决方案是将
$var
作为参数传递给fnc1()
,甚至传递给class1::\u construct()
作为参数传递
class class1{
function fnc1($var) {
echo $var['var2'];
}
}
在另一个文件中,使用数组作为参数调用该类方法。来自:
包含文件时,它包含的代码将继承包含文件所在行的变量范围。从该点开始,调用文件中该行可用的任何变量都将在被调用文件中可用。但是,包含文件中定义的所有函数和类都具有全局作用域
所以你可以
class class1
{
function fnc1()
{
include 'thefile.php'
echo $var['var2'];
//rest of function here
}
}
但是像其他人之前指出的那样,您不想这样做,因为它在您的类中的文件系统上引入了一个。如果您的方法需要这些变量才能工作,那么将它们作为注入,或者将它们传递到构造函数中,并使它们成为属性(如果您更经常需要它们)。这将被调用,从长远来看,它将使您的代码更易于维护,例如do
class class1
{
private $data;
public function __construct(array $var)
{
$this->data = $var;
}
function fnc1()
{
echo $this->data['var2'];
//rest of function here
}
}
然后呢
$obj = new class1($var);
echo $obj->fnc1();
或者要求在调用时将数据传递到方法中
class class1
{
function fnc1(array $var)
{
echo $var['var2'];
//rest of function here
}
}
然后
$obj = new class1;
$obj->fnc1($var);
@Vindia:我也更喜欢Argumat样式,但建议使用类型提示或简单检查,以避免在访问*non_array*['var2']时出现警告:
// acccepts array only. Errors be handled outside
function fnc1(Array $var) {
echo $var['var2'];
}
// accepts any type:
function fnc1(Array $var) {
if (is_array($var)) {
echo $var['var2'];
}
}
当然,但这取决于开发者。它可能是始终使用数组调用的内部函数。(您还可以在
回送
之前添加数组\u key\u exists()
)。
// acccepts array only. Errors be handled outside
function fnc1(Array $var) {
echo $var['var2'];
}
// accepts any type:
function fnc1(Array $var) {
if (is_array($var)) {
echo $var['var2'];
}
}