Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向对象PHP问题_Php_Oop - Fatal编程技术网

面向对象PHP问题

面向对象PHP问题,php,oop,Php,Oop,我有一个名为Captcha.php的类,比如: <?php class Captcha { const FIRST_NUM = 1; const SECOND_NUM = 9; private $num1 = rand(FIRST_NUM,SECOND_NUM); private $num2 = rand(FIRST_NUM,SECOND_NUM); function CreatNums(){ return $num1;

我有一个名为
Captcha.php
的类,比如:

<?php
class Captcha {
     const FIRST_NUM   = 1;
     const SECOND_NUM  = 9;

    private $num1 = rand(FIRST_NUM,SECOND_NUM);
    private $num2 = rand(FIRST_NUM,SECOND_NUM);

    function CreatNums(){
        return $num1;
    }
}

尽早启用
错误报告
以查看语法错误。启用错误报告。对于初学者,通常不能将属性的默认值设置为表达式的结果。这需要在构造函数中完成。Jonatha明白了:您的类是一个完全的语法错误,因此PHP在include()阶段退出。因为您没有提到查看任何错误,所以您可能已经关闭了错误报告和显示错误。在开发或调试时,两者都不应该关闭。为了解释正在发生的事情。。。您不能将类变量的默认值设置为方法调用,这是因为它需要在编译时计算(是的,PHP编译…),并且
rand()
只能在“运行时”期间运行。因此,由于
\uu construct()
是在运行时执行的,因此我们得到了上面的答案。。。
<?php
include_once('Captcha.php');
$tat = new Captcha();
$result = $tat->CreatNums();
echo $result;
<?php
class Captcha {
    const FIRST_NUM   = 1;
    const SECOND_NUM  = 9;

    private $num1; 
    private $num2;

    function __construct(){
        $this->num1 = rand(self::FIRST_NUM, self::SECOND_NUM);
        $this->num2 = rand(self::FIRST_NUM, self::SECOND_NUM);
    }

    function CreatNums(){
        return $this->num1;
    }
}

$tat = new Captcha();
$result = $tat->CreatNums();
echo $result;