我正在努力在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
答案 0 :(得分:4)
只是为了澄清:根据评论,在这种情况下有效的是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
答案 1 :(得分:0)
我认为你想要做的是
<?php namespace Services;
class ItemValidator extends Basevalidator
{
.....
然后,不使用名称空间中的类名,而是使用名称空间,然后扩展验证器
<?php
uses Services;
class ItemsController extends ItemValidator
{
我相信你正在努力实现的目标。
答案 2 :(得分:0)
应用程序/管理/ foocontroller.php
在composer.json中:
"psr-0":{
"App\\Controller\\Admin" : "app/controller/admin"
}
composer dump-autoload -o
foocontroller.php
<?php namespace App\Controller\Admin;
class foocontrolelr extends \BaseController
{
public function index(){}
}