调用类自己的函数错误

时间:2012-09-13 08:38:13

标签: php

如何调用属于该类中同一个类的函数?

我有:

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。在这个用例中,我做的还是不好还是没问题?

3 个答案:

答案 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' ;