2014-11-26 09:54:58 4068次浏览 1条回答 0 悬赏 20 金钱

app 项目目录

把自己写的类 放在 app/vendor/class/ 下面,在控制器中实例化到时候提示 class不存在。

配置文件中是这样写的

<?php
$params = require(__DIR__ . '/params.php');
$config = [
    'id' => 'app',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],

    'aliases' => [
        '@class' => '@vendor/class',
    ],
    ......
?>

改如何解决, 求高手给个能用的实例。。

最佳答案

  • fly020212 发布于 2014-12-10 10:00 举报

    首先,要明白 vendor 目录的含义,这个目录基本是放第三方类库的,yii 框架放在这里,你使用的 github 上的类库通过 composer 安装的也放在这里,但,你的产品代码,是不需要放在这里的,也不应该放在这里

    第二,虽然,我们的代码用了 namespace app\XXX\XXX 定义 namespace,但是,这个 app 目录对应的就是 'basePath' => dirname(__DIR__), 目录,namespace app\vendor\class 对应的是 basePath/vendor/class 目录,当然,不应该放在 vendor 目录下
    举个例子
    namespace app\models 是目录 basePath/models

    <?php
    namespace app\models;
    class User {};
    

    这个 User 的 类名,是 \app\models\User, 文件是 basePath/models/User.php

    最后,以上的前提是,你对 php 的 namespace 有大概的了解

    1 条回复
    回复于 2014-12-12 18:21 回复

    如果在加载自己的类的时候 之前写的类里面如果有很多的require关系 怎么添加呢

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
吴笛
主管

吴笛

注册时间:2013-12-24
最后登录:2016-08-03
在线时长:39小时27分
  • 粉丝5
  • 金钱0
  • 威望20
  • 积分590

热门问题