1

これが問題です。名前空間からクラスをロードできません。

私は安らかなアプリを開発しており、エンティティ/サービス/リポジトリの方法に従って、要求されたデータにアクセスしてフォーマットを提供しようとしています。問題は、サービスからクラスをロードできないことです。アプリ内にapiというフォルダーを作成し、その中に他の 3 つのフォルダーを作成しました: api/entities/api/services/およびapi/repositories/. サービス内にはさらに 2 つのフォルダーがあります: validatorsdatapickersです。

RESTulf アプリなので、controllers folder: 内に api フォルダーも作成しましたcontrollers/api/

私のアプリフォルダーの現在のツリーは次のとおりです。

app/
   api/
       entities/
       repositories/
       services/
            datapickers/
                MemberData.php
                ConsumeData.php
            validators/
     ...
    models/
    controllers/
       api/
           members.php
           (other restful controllers)
    languages/
     ...

まず、これはstart.phpのAutoloadセクションです。

Autoloader::directories(array(
    path('app').'models',
    path('app').'libraries',
    path('app').'api'
));

Autoloader::namespaces(array(
    'Api' => path('app').'api',
));

これはMemberData.php次のとおりです。

<?php 
namespace Api\Services\Datapickers;

use Api\Repositories as Repo;

class MemberData
{
     /* Do some stuff */
}

今、私が使用しようとするMemberDatacontrollers/api/members.php

<?php
use Api\Services\Datapickers\MemberData;

class Api_Members_Controller extends Api_Base_Controller
{
    public function get_index($id = null)
    {
        if (!empty($id))
            $this->params->data = MemberData::getById($id);
        else
        {
            $this->params->data = MemberData::getAll(
                Input::get('offset'), 
                Input::get('limit')
            );
        }

        return Response::json($this->params, 200);
    }
}

私は以下を取得します:

Unhandled Exception
Message:

Class 'Api\Services\Datapickers\MemberData' not found

Location:

/path_to_project/application/controllers/api/members.php on line 15

この行は次のとおりです。$this->params->data = MemberData::getById($id);

apiフォルダを自動ロードし、ベース api 名前空間を登録しますstart.phpが、それでも同じエラーが発生し続けます。ITは、Laravelがapi名前空間などを認識しないようです。

完全な名前空間を登録しようとしました:

Autoloader::namespaces(array(
    'Api\Services\Datapickers' => path('app').'api/services/datapickers',
));

しかし、私が得たエラーは次のとおりCall to undefinde method 'Api\Services\Datapickers\MemberData::getById()'です。これは単なるテストでした (Autoloader にすべてのサブ名前空間を登録したくありません)。

4

0 に答える 0