composer 应用

Namespace

1.非限定名称或不包含前缀的类名称.
如 $a = new foo();
如果当前命名空间是 app,则 foo 为appfoo
如果当前没有命名空间,代码是全局的.则 foo 被解析为全局 foo

2.限定名称或包含前缀的名称.
如 $a = new userfoo();
如果当前命名空间为 app,则 foo 被解析为 appuserfoo();
如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为 userfoo。

3.完全限定名称
如 $a = new userfoo();
在这种情况下,foo 就是 userfoo();

访问任意全局类、函数或常量,都可以使用完全限定名称,例如 strlen() 或 Exception 或 INI_ALL。

composer

1.classmap
命名空间和文件路径的映射

{    "autoload": {        "classmap": ["src/", "lib/", "Something.php"]    }}

它会扫描指定目录下以. php 或. inc 结尾的文件中的 class,生成 class 到指定 file path 的映射.
并加入新生成的 vendor/composer/autoload_classmap.php 文件中

 $baseDir . '/app/Console/Kernel.php'];?>

2.files

{    "autoload": {        "files": ["src/MyLibrary/functions.php"]    }}

用于全局性的helper 目录下函数
它会生成一个 array,包含这些配置中指定的 files,再写入新生成的 vendor/composer/autoload_files.php 文件中,以供 autoloader 直接进行加载

3.psr-4

"autoload": {        "psr-4": {            "App\\": "app/"        }    }

key 和 value 就定义出了 namespace 以及到相应 path 的映射
注册命名空间到对应的路径下的 src 目录下,不指向 src 也可以.
然后根据命名空间去目录下寻找文件.
$a = new AppFoo();
会去 app目录下找 foo.php 文件

加入后执行 composer install 或 composer dump-autoload

项目实践

1.项目目录

2.composer.json

{  "require": {    "predis/predis": "1.1.0"  },  "autoload": {    "psr-4": {      "App\\": "app/",      "Third\\":"third/"    },    "files":[      "helper/constants.php",      "helper/funs.php"    ]  }}

执行 composer install 或 composer dumpautoload
会在vendor/composer 里对应的加载方式文件中生成映射

psr-4

return array(    'Third\\' => array($baseDir . '/third'),    'Predis\\' => array($vendorDir . '/predis/predis/src'),    'App\\' => array($baseDir . '/app'),);

files

return array(    'da551be15a8db089a9deb0b11a4f158d' => $baseDir . '/helper/constants.php',    'cebcf5f3197b00af0a0ca1ae69808ce5' => $baseDir . '/helper/funs.php',);

使用,在 index.php 中

require dirname(__FILE__)."/vendor/autoload.php";echo Predis\Client::VERSION;$app = new App\Pay();$app->index();

关键字:php, composer

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部