我已经开始学习composer,我正在尝试构建一个composer.json文件,我想把我的所有基类(即自定义框架)作为一个具有其他依赖关系的供应商。
场景是,我正在用Slim、Twig和Laravel ORM等构建一个小框架,我想把我的框架(及其所有依赖项)放在文档根目录之外的文件夹中,因为它可以通过PHP.ini或set_include_path()中设置的自定义PHP包含路径用于多个项目。我正在使用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": "." }
}
}
为了通过composer.json文件从om/OmFramework加载我的所有类,我应该在autoload部分中写些什么?如有任何指导,我们将不胜感激。
BaseController.php文件:
<?php
namespace OmFramework'Factory;
class BaseController {
public function __construct()
{
//TO-DO:
}
public function sayHello()
{
echo 'Hello World!' . "'n";
}
}
如果我错过了任何有助于你指导我的信息,我很乐意与你分享。
请注意,我正在本地开发该框架,目前不使用github。当它准备好了,我会把它推到github。
框架包应该在所选目录(不包括供应商目录本身)中提供自己的代码,然后将自动加载器定义指向它:
/path/to/my/own/framework
|----> composer.json
|----> composer.lock
|----> om
|------> OmFramework
|---------> Factory
|------------> BaseController.php
|----> vendor
|----> slim
|----> illuminate
|----> twig
composer.json的"自动加载"部分很简单:
{
"autoload": {
"psr-4": {
"OmFramework''": "om/OmFramework"
}
}
}
在处理名称空间类时,最好使用PSR-4。PSR-0应该用于没有命名空间的旧类。