【问题标题】:Cakephp Parse error: syntax error, unexpected 'Class' (T_CLASS), expecting identifier (T_STRING)Cakephp 解析错误:语法错误,意外的“类”(T_CLASS),需要标识符(T_STRING)
【发布时间】:2016-01-31 20:58:42
【问题描述】:

我的数据库中有一个名为“类”的表。

当我执行cake bake all classes 时,我收到了这个错误:

Parse error: syntax error, unexpected 'Class' (T_CLASS), expecting identifier (T_STRING) in C:\xampp\htdocs\timetable\src\Model\Table\ClassesTable.php on line 4

我知道错误来自哪里,但是有没有办法摆脱这个错误而不必重命名我的“类”表?

【问题讨论】:

  • 别用那个名字
  • 下次您提出问题时,请确保使用您正在使用的特定 CakePHP 版本对其进行标记。

标签: php cakephp cakephp-3.0 parse-error


【解决方案1】:

我知道错误来自哪里,但有没有办法摆脱这个错误而不必重命名我的“类”表?

不,你没有。 :) 问题的发生是因为 CakePHP 试图烘焙 \App\Model\Entity\Class.php,而 obviously 将无法正常工作。问题是不是类名。

您必须以某种不同的方式命名 entity 类和 tell your table object to work with that entity class。发生这种情况是因为 Cake 期望实体按照惯例和"class" is a reserved key word in php 是单数的。 Cake 将实体的“类”转换为单数,这就是导致问题的原因。所以烘焙你的模型,改变实体类,然后烘焙控制器和视图。

我建议你阅读并记住the CakePHP conventions

【讨论】:

    【解决方案2】:

    类是reserved keyword of PHP,如果这样实例化它会造成麻烦。

    一种解决方案是手动创建一个模型,如下所示:

    class MyClass extends AppModel {
        public $useTable = 'classes';
    }
    

    您需要确保您的控制器 $uses MyClass(在您的 ClassesController 中)。

    之后,模型应该可以像任何其他模型一样使用,尽管有保留期限。话虽如此,一旦你手动创建了模型,我并不是 100% 相信烘焙的结果,所以,如果你能发布你的结果,那就太好了。

    【讨论】:

    • 他使用的是 CakePHP 3.0,问题是实体,而不是 Table 对象。
    猜你喜欢
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 2018-07-23
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多