これが問題です。名前空間からクラスをロードできません。
私は安らかなアプリを開発しており、エンティティ/サービス/リポジトリの方法に従って、要求されたデータにアクセスしてフォーマットを提供しようとしています。問題は、サービスからクラスをロードできないことです。アプリ内にapiというフォルダーを作成し、その中に他の 3 つのフォルダーを作成しました: api/entities/
、api/services/
およびapi/repositories/
. サービス内にはさらに 2 つのフォルダーがあります: validatorsとdatapickersです。
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 */
}
今、私が使用しようとするMemberData
とcontrollers/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 にすべてのサブ名前空間を登録したくありません)。