课程咨询 :13623629309

太原PHP培训 > 达内新闻 > 你所不知道的 PHP(二)
  • 你所不知道的 PHP(二)

    发布:SegmentFault      来源:SegmentFault      时间:2016-11-07

  • 你所不知道的 PHP(二)

    php中有很多的小秘密,得知这些小秘密对你的发展很有好处。太原php培训班来告诉你。

    composer 执行 install 等操作时, composer 会把文件中的配置存储在 vendor/composer/autoload_psr0.php 文件中的返回数组中。

    例如:定义了Very\Good=>vendor\Lionis\IsReal\Cool,在调用 use Very\Good\Love\SomeClass PSR-0 加载的实际目录为 vendor/Lionis/IsReal/Cool/Very/Good/Love/SomeClass.php

    对吧,这简直深得吓人,所以 PSR-0 被官方废除了。但是一些主流的框架已经实现了 PSR-0 ,为了向下兼容还是要实现 PSR-0

    composer.json配置:

    "autoload": {

    "psr-0": {

    "Very\\Good": "vendor\Lionis\IsReal\Cool"

    }

    }

    PSR-4

    PSR-4 是现在比较推荐的方法,用于替代 PSR-0

    PSR-0 不同的是,取消掉了 _ 作为分隔符和目录结构。

    composer 执行 install 等操作时, composer 会把文件中的配置存储在 vendor/composer/autoload_psr4.php 文件中的返回数组中。

    例如:定义了Very\Good=>vendor\Lionis\IsReal\Cool,在调用 use Very\Good\

    Love\SomeClass PSR-4 加载的实际目录为 vendor/Lionis/IsReal/Cool/Love/SomeClass.php

    composer.json配置:

    "autoload": {

    "psr-4": {

    "Very\\Good": "vendor\Lionis\IsReal\Cool"

    }

    }

    classmap

    classmap 通过配置指定的目录和文件,在 composer 执行 install 等操作时, composer 会去扫描对应的目录下以 .php 结尾的文件中的 class ,并存储在 vendor/composer/autoload_classmap.php 文件中的返回数组中。

    composer.json配置:

    "autoload": {

    "classmap": [

    "Lionis/",

    "Xiaoer/"

    ]

    }

    如果 Lionis 下有一个叫 VeryCool的文件,那么在 vendor/composer/autoload_classmap.php 中会生成。

    // autoload_classmap.php @generated by Composer

    $vendorDir = dirname(dirname(__FILE__));

    $baseDir = dirname($vendorDir);

    return array(

    'VeryCool' => $baseDir . '/Lionis/VeryCool.php',

    // 其他的映射

    );

    files

    files 就是直接简单粗暴的加载文件。在 composer 执行 install 等操作时, composer 会把文件中的配置存储在 vendor/composer/autoload_static.php 文件中的生成一个 $files 数组。

    composer.json 配置:

    "autoload": {

    "files": ["Lionis/Very/Cool.php"]

    }

    小结

    composer 通过使用 composer.json ,用 json 的格式来指定我们需要 自动加载 的规则 。我们只要在入口文件引入 vendor/autoload.php 就能很方便的便能使用 自动加载

    如果你对 composer 实现 自动加载 的原理感兴趣,可以顺着 vendor 中的 autoload.php 去看看源码。

    总结

    石器时代 信息时代 PHP 经历了很多试验和改变后正在变得越来越好。当然,许多优秀的框架让我们开发速度更快,需要理解的一些知识点也随之被隐藏起来,让我们更加专注于实现逻辑。但是,我们有的时候还是要尝试的去理解他们工作的原理,来提升我们自己。像我老师说过的,所不定一下子踩到狗屎运了呢。

    好了,今天就给大家讲这么多吧,喜欢我的内容可以关注或者分享(微信公众平台:tytedu)选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!

上一篇:你所不知道的 PHP(一)

下一篇:当tinyproxy遇上php的soap

最新开班日期  |  更多

php高级开发名企定制班(剩2个名额)

php高级开发名企定制班(剩2个名额)

开班日期:12-30

php高级开发周末班(剩5个名额)

php高级开发周末班(剩5个名额)

开班日期:12-30

php高级开发免费试听(剩5个名额)

php高级开发免费试听(剩5个名额)

开班日期:12-30

更多高级开发工程师精品班

更多高级开发工程师精品班

开班日期:12-30

  • 地址:山西省太原市小店区学府街长治路高新国际A座24层
  • 课程培训电话:13623629309     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56

    在线客服系统