我已经开始学习作曲家了,我正在尝试构建一个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。
答案 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应该用于没有名称空间的旧类。