【问题标题】:Resolve Laravel library and model name crash解决 Laravel 库和模型名称崩溃的问题
【发布时间】:2013-05-05 17:00:51
【问题描述】:

我有一个类名相同的库和模型。如何在我的库类中实例化模型?

/application/libraries/property/request.php

<?php namespace Property;

class Request {
...

/application/models/request.php

<?php 

class Request extends Eloquent {
...

需要在请求库中实例化模型。 new \Models\Request() 将导致“找不到类 'Models\Request'”。

有没有办法在不改变类名的情况下解决这个问题?

【问题讨论】:

    标签: laravel laravel-4 namespaces


    【解决方案1】:

    你试过new Request(),还是new \Request()?我不确定,但您的 Request 模型未在 Models 命名空间中定义,所以可能是这样......

    【讨论】:

    • new Request() 在“/application/libraries/property/request.php”中只会实例化请求库类,而不是模型。 new \Request() 也不起作用。我尝试添加“命名空间模型;”在“/application/models/request.php”中,但我一直无法找到实例化请求模型类的方法。
    • 嗯,很奇怪,抱歉没用。我认为拥有一个 Request 控制器和一个 Request 模型并不理想,所以也许尝试将控制器重命名为 RequestConroller ...?
    【解决方案2】:

    您需要命名您的 Request 类,以便其他文件知道它在命名空间中的位置,否则无法知道它是否在 \、\Models、\Property 或其他什么中。

    你真的应该有这个:

    /application/libraries/property/request.php

    <?php namespace App\Libraries\Property;
    
    class Request {
    ...
    

    /application/models/request.php

    <?php namespace App\Models;
    
    class Request extends Eloquent {
    ...
    

    然后在您的请求库中:use App\Models\Request as RequestModel;(不确定是否可以保持相同的名称)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2018-09-24
      相关资源
      最近更新 更多