5

Laravel 4で作業用の名前空間を設定するのに苦労しています。こことコードブライトブックでいくつかのガイドを読みました。しかし、私はまだそれを理解することができないようです。私のアプリは次のように設定されています:

アプリ/コントローラー/itemController アプリ/サービス/itemValidator

私のcomposer jsonファイル(変更されるたびにダンプオートロードします)には、次のものがあります。

"autoload": {
    "classmap": [
        <usual data...>
        "app/repositories",
        "app/services",
    ],
    "psr-0": {
        "Services": "app/services/"
    }

私のアイテムコントローラーは次のように設定されています:

<?php
use Services\ItemValidator;

class ItemsController extends BaseController {

public function store()
{
   $validator = new ItemValidator;
.....etc.....

私のItemsValidatorクラスは次のように設定されています:

 <?php namespace Services;

 class ItemValidator extends BaseValidator
 {
 ....code....

行に到達すると、次のエラーが表示されます$validator = new ItemValidator

Class 'Services\ItemValidator' not found 
4

3 に答える 3

5

明確にするために:コメントによると、この場合に機能するのは、次のようにフォーマットされた composer.json です。

"autoload": {
    "classmap": [
        <usual data...>
        "app/repositories",
        "app/services",       <---- this is the only entry needed to autoload your services
    ],

次に、実行する必要があります

composer dump-autoload

クラスがファイルに表示されているかどうかを確認します

vendor/composer/autoload_namespaces.php
于 2013-06-07T13:52:46.177 に答える
0

あなたがやりたいと私が信じていることは

<?php namespace Services;

 class ItemValidator extends Basevalidator
 { 
  .....

次に、名前空間でクラス名を使用する代わりに、名前空間を使用してからバリデーターを拡張します

<?php
  uses Services;

  class ItemsController extends ItemValidator
  { 

それがあなたが達成しようとしていることだと思います。

于 2013-06-07T13:00:18.613 に答える