Laravel类命名空间

时间:2015-05-15 17:52:27

标签: php class laravel namespaces

我在App / laravel 5中创建了一些自定义类:

App / Database.php
App / Table.php
App / ContactsTable.php

在我的ContactsTable类中,我扩展了Table类

use Table;
/**
 * Description of ContactsTable
 * 
 * @author john
 */
class ContactsTable extends Table {

我在config(app \ Table)和ContactsTable(App \ ContactsTable)的config / app.php中设置了别名。但是在加载页面时它会给我一个错误:

"使用非复合名称的使用声明'表'没有效果"

我尝试过以不同方式导入课程的多种组合,没有运气。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这是因为您当前与Table类位于同一名称空间中。由于您还将其别名为Table,因此它可能不知道您正在谈论的Table,当前为TableTable的别名驻留在您当前的命名空间中,这两者恰好也是一样的。

删除别名并删除use语句。由于这些类在同一名称空间中,因此无需执行其中任何一项。

App名称空间中保留两个非别名的名称也是一个非常好的主意,因为它们都是非常常见的名称,并且最终可能会给您带来更多麻烦。

我只是想重新创建这个,一切都运行正常。不过要确定一下,这是我用的代码......

应用\ ContactsTable.php

namespace App;

class ContactsTable extends Table {

}

应用\ Table.php

namespace App;

class Table {

}

routes.php文件

Route::get('test', function()
{
    $table = new \App\ContactsTable();

    echo get_class($table);
});

转到myapp.local/test,输出App\ContactsTable