mktime在类内部使用时会产生语法错误


mktime creates a syntax error when used inside a class?

有人能告诉我为什么mktime在类内给出错误吗??

<?php
$time_Stamp = mktime(6,30,0);
echo strftime("%H:%M",$time_Stamp);
?>

报告6:30

<?php
    class Test_Time{
        private $time_Stamp = mktime(6,30,0);
    }
    ?>

报告分析错误:语法错误,意外的"(",应为","或";",位于第5行的C:''Program Files(x86)''Apps''www''ssandbox''general''mktime.php

根据PHP文档,可以初始化类中的属性有以下限制:

"此声明可能包括初始化,但是初始化必须是一个常数值,也就是说,它必须能够在编译时进行评估,并且不能依赖于运行时信息以便进行评估。"

试试这个

<?php
class Test_Time{
    private $time_Stamp; 
   function __construct()
   {
        $this->time_Stamp = mktime(6,30,0);
         echo strftime("%H:%M",$this->time_Stamp);
   }
}
?>

不能通过计算表达式来确定类成员的默认值。将mktime放在构造函数中:

class Foo {
    private $bar;
    public function __construct() {
        $this->bar = mktime(6, 30, 0);
    }
}

不能直接在类内执行代码。它必须在一个称为的函数内部

<?php
    class Test_Time
    {
        private $time_Stamp;
        function showTime()
        {
            $this->time_stamp=mktime(6,30,0);
            echo strftime("%H:%M",$this->time_Stamp);
        }
    }
    $var=new Test_Time();
    $var->showTime();
?>

这可能是一个__construct()函数,但在某个时刻必须实例化该类。

原因是,除非变量被定义为类的对象,否则类实际上什么都不是。在此之前,它只是一个等待使用的框架。

<?php
class Test_Time{
    private $time_Stamp;
    function __construct(){
        $this->time_Stamp = mktime(6, 30, 0);
    }
    function printTime(){
        echo strftime("%H:%M", $this->time_Stamp);
    }
}
//example usage
$test = new Test_Time();
$test->printTime();
?>

您在类中直接回显,请在方法或构造函数中执行,而不是在中执行

<?php
class Test_Time{
   function __construct(){
    $time_Stamp = mktime(6,30,0);
    echo strftime("%H:%M",$time_Stamp);
    }
}
?>