Php Laravel4初始化模型中的另一个模型

Php Laravel4初始化模型中的另一个模型,php,oop,laravel-4,eloquent,Php,Oop,Laravel 4,Eloquent,如何从Laravel 4中的模型启动模型。我尝试了以下方法,但没有成功 namespace App\Models; use \Httpful\Request; use \RecursiveIteratorIterator; use \RecursiveArrayIterator; use Illuminate\Support\Facades\DB as DB; class Parser extends \Eloquent { public function __construct(Affi

如何从Laravel 4中的模型启动模型。我尝试了以下方法,但没有成功

namespace App\Models;

use \Httpful\Request;
use \RecursiveIteratorIterator;
use \RecursiveArrayIterator;
use Illuminate\Support\Facades\DB as DB;

class Parser extends \Eloquent {

public function __construct(AffiApi $affiapi) {
    $this->affiapi = $affiapi;
    $url = "HTTP://some.com/xml/feed_config.xml";
    $xml = Request::get($url)->expectsXml()->send();
    $this->xml = $xml->body;
    }


    public function Test(){
       $api = new Api();
       //I get error Class 'App\Models\Api' not found 
    }
}


class Api extends Parser {
 }

如何正确地进行di,或者什么是实现这一点的最干净的方法,最简洁、最实用的方法是使用一种称为依赖注入(di)的原理。通过这种方式,它是松散耦合的,也可以为单元测试注入存根类

class Parser extends \Eloquent {

    public function __construct(Api $api) {
       $this->api = $api;
    }

    public function Test() {
    }
}

添加新类后,请确保从项目根目录运行
php artisan dump autoload

谢谢,这是一个输入错误$this api=$api;不应该是$this->api=$api?我只是尝试一下你的建议我得到了一个传递给App\Models\Parser的错误参数1::\uu construct()必须是App\Models\affapi的一个实例,没有给定,在/var/www/client3/web4/web/laravel/App/controllers/admin中调用。我明白了,名称空间有问题!这就是前面斜杠的原因。你能发布更多的代码吗?如果你的类不在名称空间内,你可以去掉反斜杠。有一点似乎有点矛盾,那就是类
Api
从你使用
Api
解析器扩展而来。你应该去掉
Api
解析器扩展而来的
不可能的是鸡还是蛋的故事。而且
AffiApi
也位于
App\Models
名称空间中?是的,我已经做了,我尝试将所有的东西都放在解析器中。我想我可以像那样分离代码,你能发布你的
AffiApi
模型的开始片段吗?