来自类内部的另一个类的方法

时间:2014-06-02 14:22:08

标签: php class oop

我不知道它是否可以在PHP中使用。我尝试了这段代码,但是我收到了错误。

class UserAccount extends classDatabase
{
    $validate = new classValidate;
    function login($user, $pass)
    {
       //access a method from classValidate
       $validate->checkInput($user);
    }
}

我想使用classValidate中的方法验证用户输入。怎么做?我无法延长classValidate因为我已经扩展classDatabase

请告诉我如何做到这一点。

2 个答案:

答案 0 :(得分:1)

您的示例代码有语法错误:

class UserAccount extends classDatabase
{
     $validate = new classValidate; // <-- in php you can't do this

首先,您需要指定一个访问修饰符,例如publicprotectedprivate或至少var。其次,php无法运行&#34;声明中的代码,= new ClassValidate在此不起作用,只有42"some string"等常量或文字或静态方法调用的结果(see docs

您可以将实例化移动到构造函数,如下所示:

public function __construct() {
    $this->validate = new ClassValidate;
}

注意显式的$this->,在php中你总是要输入它。

最后,您需要正确使用login()中的实例:

function login($user, $pass) {
    $this->validate->checkInput($user);
}

答案 1 :(得分:0)

class UserAccount extends classDatabase
{
    $validate = null;

    function __construct(){
        $this->validate = new classValidate;
    }

    function login($user, $pass)
    {
       //access a method from classValidate
       $this->validate->checkInput($user);
    }
}

或添加范围使其不在PHP5上发出警告

class UserAccount extends classDatabase
{
    private $validate = NULL;

    function __construct(){
        $this->validate = new classValidate();
    }

    public function login($user, $pass)
    {
       //access a method from classValidate
       $this->validate->checkInput($user);
    }
}