如何调用属于该类中同一个类的函数?
我有:
class BaseConfig {
public $page ;
public $htmlRoot = 'assets/html/';
public function getPageTitle(){
echo $page = $_GET['p'];
}
public function getContent(){
$file = getPageTitle().'.php';
return readfile($htmlRoot.$file);
}
}
拨打电话时出现以下错误
<?PHP Config::getContent();?>
Fatal error: Call to undefined function getPageTitle() in C:\Xit\xampp\htdocs\IMS3\assets\Config.php on line 17
顺便说一句,我正在创建自己的简单框架。
谢谢大家,$这不起作用,它只是说我不能在对象上下文中使用它。
'self'工作如此谢谢。
请您详细说明Radu提到的安全漏洞?
@ S3Mi正在读取的文件只是html。在这个用例中,我做的还是不好还是没问题?
答案 0 :(得分:3)
您需要在函数名称前使用$this->
:
$file = $this->getPageTitle().'.php';
如果函数是static
,那么您将在大多数情况下使用$this->
而不是self::
:
$value = self::someStaticFunction();
如果该功能为static
,则可能还需要使用late static binding进行调用,例如static::someStaticFunction()
。然而,这暗示了一个有问题的类设计,所以我只是提到它的完整性。
答案 1 :(得分:1)
class BaseConfig {
public $page ;
public $htmlRoot = 'assets/html/';
public function getPageTitle(){
return $this->page = $_GET['p'];
}
public function getContent(){
$file = $this->getPageTitle().'.php';
return readfile($this->htmlRoot.$file);
}
}
我看到你在单独的文件夹中有文件,我猜你没有任何关键/机密数据,但它不能解决对其他文件夹的访问。
可以将$ _GET ['p']设置为'../index.php'并获取您的PHP代码。这是一个很大的安全问题。
我建议您阅读有关输入清理和验证的信息。
永远不要通过readfile()或传递原始内容的任何函数来提供.php文件。 .php文件应该由PHP解释。公开.php代码非常糟糕。
答案 2 :(得分:0)
$file = $this->getPageTitle().'.php' ;