【问题标题】:Unexpected T_VARIABLE error意外的 T_VARIABLE 错误
【发布时间】:2023-03-14 06:30:01
【问题描述】:

好的,我知道这是一个很常见的问题,但到目前为止我发现的所有解决方案都涉及缺少分号或花括号,我知道这两种情况都不适合我。

我有一个可以很好地处理这个变量赋值的类:

session.php:

<?php

   class session {
     ... 
     var $host = 'localhost';
     ...
   }

?>

太好了。但我想将我的数据库详细信息放在另一个文件中,所以我这样做了:

db_creds.php:

<?php

   var $db_creds = array(
      'host' => 'localhost',
      ...
   );

?>

session.php

<?php

   include('db_creds.php');

   class session {
     ... 
     var $host = $db_creds['host'];
     ...
   }

?>

然后给了我这个错误:Parse error: syntax error, unexpected T_VARIABLE in ../session.php on line 74,其中第 74 行是我的 var $host 分配。

我什至尝试在 session.php 中执行此操作,以确保问题不在包含中:

session.php

<?php

   # include('db_creds.php');

   class session {
     ...
     var $db_host = 'localhost';
     var $host = $db_host;
     ...
   }

?>

... 但这只会引发与上述相同的错误。

谁能告诉我这里发生了什么?我已经束手无策了!

【问题讨论】:

    标签: php include variables


    【解决方案1】:

    这里不允许使用变量,PHP中属性必须用常量初始化:

    […]这个初始化必须是一个常数值

    [Source: php.net manual]

    使用构造函数正确初始化值:

    class session {
        var $host;
    
        function __construct() {
            $this->host = $db_creds['host'];
        }
    }
    

    【讨论】:

    • 啊,明白了。对 PHP 类和诸如此类的东西仍然很陌生。谢谢! +1
    【解决方案2】:
    1. 类名中的第一个字母应为大写(会话类)

    2. 你写了构造函数吗

    3. 通过 $this->property 访问类属性

    【讨论】:

    • -1 第1点是主观的,第2点和第3点与OP的问题无关。
    猜你喜欢
    • 2015-05-11
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多