如何在我自己的系统是供应商时编写composer.json?

时间:2014-09-09 05:28:37

标签: php json twig composer-php slim

我已经开始学习作曲家了,我正在尝试构建一个composer.json文件,我希望将所有基类(即自定义框架)作为供应商本身与其他依赖项一起使用。

场景是我正在使用Slim,Twig和Laravel ORM等构建一个小框架,我想将我的框架(包含所有依赖项)放在文档根目录之外的文件夹中,因为它可以用于几个通过自定义PHP包含的项目包含在PHP.ini中设置的路径或由set_include_path()设置的项目。我正在使用VPS。

我的文件夹结构如下:

/path/to/my/own/framework
 |----> composer.json
 |----> composer.lock
 |----> vendor
         |----> slim
         |----> illuminate
         |----> twig
         |----> om
                 |----> OmFramework (this is my own framework)
                          |----> Factory
                                  |----> BaseController.php
 ....

到目前为止,我编写了以下composer.json:

{
    "name": "....",
    "description": "....",
    "keywords": ["..."],
    "license": "MIT",
    "authors": [
        {
            ....
        }
    ],
    "require": {
        "php": ">= 5.3.0",
        "slim/slim": "2.4.*",
        "slim/views":"0.1.2",
        "twig/twig": "1.*",
        "twig/extensions": "*",
        "itsgoingd/slim-facades": "dev-master",
        "illuminate/database" : "4.*",
        "cartalyst/sentry" : "2.*",
        "ircmaxell/password-compat": "1.0.*"
    },
    "autoload": {
        "psr-0": { "OmFramework": "." }
    }
}

我应该在autoload部分写什么来从om / OmFramework通过composer.json文件加载我的所有类?任何指导都将受到高度赞赏。

BaseController.php文件:

<?php
namespace OmFramework\Factory;

class BaseController {
        public function __construct()
        {
                //TO-DO:
        }

        public function sayHello() 
        {
                echo 'Hello World!' . "\n";
        }
}

如果我错过了任何可以帮助您指导的信息,我将很乐意与您分享。

请注意,我正在本地开发框架,暂时不使用github。准备好之后,我会把它推到github。

1 个答案:

答案 0 :(得分:1)

框架包应该将它自己的代码发送到一个选择的目录中(不包​​括供应商目录本身),然后将自动加载器定义指向它:​​

/path/to/my/own/framework
 |----> composer.json
 |----> composer.lock
 |----> om
 |------> OmFramework
 |---------> Factory
 |------------> BaseController.php
 |----> vendor
         |----> slim
         |----> illuminate
         |----> twig

composer.json的“autoload”部分很简单:

{
  "autoload": {
      "psr-4": {
          "OmFramework\\": "om/OmFramework"
       } 
   }
}

在处理命名空间类时,首选使用PSR-4。 PSR-0应该用于没有名称空间的旧类。