0

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);

    }

    ?>

レポート解析エラー: 構文エラー、予期しない '('、予期しない ',' または ';' in C:\Program Files (x86)\Ampps\www\sandbox\general\mktime.php on line 5

4

5 に答える 5

3

PHP docs によると、次の制限付きでクラスのプロパティを初期化できます。

「この宣言には初期化が含まれる場合がありますが、この初期化は定数値でなければなりません。つまり、コンパイル時に評価できる必要があり、評価されるために実行時の情報に依存してはなりません。」

これを試して

<?php

class Test_Time{

    private $time_Stamp; 
   function __construct()
   {
        $this->time_Stamp = mktime(6,30,0);

         echo strftime("%H:%M",$this->time_Stamp);
   }
}
?>
于 2012-09-05T10:32:15.443 に答える
1

式を評価して、クラス メンバーの既定値を決定することはできません。mktime代わりにコンストラクターを入れます。

class Foo {
    private $bar;
    public function __construct() {
        $this->bar = mktime(6, 30, 0);
    }
}
于 2012-09-05T10:30:36.307 に答える
1

クラス内でコードを直接実行することはできません。呼び出される関数内にある必要があります。

<?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()関数である可能性がありますが、ある時点でクラスをインスタンス化する必要があります。

その理由は、変数がそのクラスのオブジェクトとして定義されていない限り、クラスは実際には何もないからです。それまでは、使用されるのを待っている単なるフレームワークです。

于 2012-09-05T10:32:45.410 に答える
1
<?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();
?>
于 2012-09-05T10:33:30.987 に答える
0

クラスで直接エコーしています。代わりにメソッドまたはコンストラクターで実行してください

<?php

class Test_Time{

   function __construct(){

    $time_Stamp = mktime(6,30,0);

    echo strftime("%H:%M",$time_Stamp);
    }

}

?>
于 2012-09-05T10:32:08.377 に答える