5

我正在努力在 Laravel 4 中建立一个工作名称空间,我已经阅读了一些指南在这里和代码明亮的书中。但我似乎仍然无法弄清楚。我的应用程序设置如下:

应用程序/控制器/itemController 应用程序/服务/itemValidator

在我的作曲家 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 回答
0

应用程序/管理员/foocontroller.php

在 composer.json 中:

"psr-0":{
    "App\\Controller\\Admin" : "app/controller/admin"
}

作曲家转储自动加载-o

foocontroller.php

<?php namespace App\Controller\Admin;
class foocontrolelr extends \BaseController
{
    public function index(){}
}
于 2014-07-25T05:39:14.610 回答