Php 访问类方法
我的班级:Php 访问类方法,php,Php,我的班级: class mvc { public function home () { return 'index'; } } 对象: include "./sys/controller/".$Current_page_Controller_name.".php"; // making object of the controller class. $controller = new $Current_page_Cont
class mvc {
public function home () {
return 'index';
}
}
对象:
include "./sys/controller/".$Current_page_Controller_name.".php";
// making object of the controller class.
$controller = new $Current_page_Controller_name;
// Cheks if model is called, m stands for "model"
if (isset($_GET['m'])) {
}
$method_name = $mvc->$Current_page_Controller_name.'()';
// Cheks if default model exists, if not gives an error.
if (method_exists($controller, $method_name)) {
echo "+";
} else {
echo "-";
//die("Lappas sledzis saplisis, gaidiet drizuma... (2)");
}
我一直在纠正这个错误
Notice: Undefined property: mvc::$home in /home/unusuallv/domains/.../public_html/sys/config.php on line 51
问题在$method_name=$mvc->$Current_page_Controller_name附近。“()”;我知道,但我想不出多少 您正在调用该函数,这就是错误所在。你不想叫它,但要知道它的名字。为此,您不需要
$method\u name=$mvc->$Current\u page\u Controller\u name.'()'代码>而是$method\u name=当前页面\u控制器\u name然后这样调用:$mvc->$method\u name()
当PHP处理脚本时,当您从$mvc
访问变量时,它会考虑$mvc->$Current\u page\u Controller\u name.'()'
,然后将字符串'()'
附加到脚本中
考虑以下示例:
//somewhere file
class MVC{
public $someVar="QWERTY";
public function abc(){/*...*/}
public function parseResponse(){/*...*/}
};
///.....
$mvc=new MVC;
$abc="someVar";
$x=$mvc->$abc."()";
echo $x;//gives you "QWERTY()"
$b=method_exists($mvc,$abc);//false
$b=method_exists($mvc,'abc');//true
//call function
$abc="parseResponse";
$mvc->$abc();//calls MVC::parseResponse
应该是这样的:
$method_name = $mvc->$Current_page_Controller_name();
在以下表达式中:
$method_name = $mvc->$Current_page_Controller_name.'()';
->
运算符的优先级高于字符串串联运算符(
)。这意味着PHP首先计算表达式$mvc->$Current\u page\u Controller\u name
,因此它尝试访问mvc类的home属性(该属性不存在)
改用这个:
$method_name = $mvc->$Current_page_Controller_name();
为什么将上部称为类,将下部称为对象?而不是$mvc->$Current\u page\u Controller\u name。“()”使用$mvc->$Current\u page\u Controller\u name()您理解错误,$Current\u page\u Controller\u name是mvc类中的函数名。我需要访问它://在您添加示例之前,答案是确定的,现在您通过提供一个带有错误的次优示例使其变得糟糕。您定义了一个变量$someFunc,但将其称为Func for Function,将其称为someVar,如果有的话。我检查了代码,没有给出错误,一切都如注释所示。@user1609394我添加了如何调用存储在变量中的函数的示例。
$method_name = $mvc->$Current_page_Controller_name();