命名空间
命名空间定义方式:在"<?php"标签后的第一行声明,这个命名空间声明语句后声明的所有php类、接口、函数和常量都在这个命名空间中。也可以使用子命名空间,使用\符号把命名空间和子命名空间分开。在同一个命名空间中的类没必要全部在同一个php文件中声明,可以在多个php文件的顶部指定同一个命名空间或子命名空间,此时这个文件的代码就是该命名空间或子命名空间的一部分,因此我们可以在不同文件中编写属于同一个命名空间的多个类。
<?php
namespace Illuminate\Http;
命名空间的作用、好处?
- 解决用户编写的代码与php内部类、函数、常量或第三方类、函数、常量之间的名字冲突。
- 为很长的标识符创建别名,减少代码量,提高可读性。tp3.2、php5.3以上
获取方式
使用魔术常量__NAMESPACE__获取当前命名空间的名称。
use namespace的工作流程
使用use关键字导入所use的类,但它只是声明某个类的完整类名(命名空间::类标识符),只有在使用这个类的时候系统才会根据use声明获取这个类的完整类名,然后利用自动加载机制进行载入。
Composer
Composer是安装和管理php组件的工具,所以了解composer前,必须清楚组件的概念。
组件
第三方类库、开发者包、代码工具包其实都可以称之为为组件,本质是一组打包的代码,是一系列相关的类、接口和trait,用于帮助我们解决php应用中某个具体问题。
//安装方法
composer require "overtrue/laravel-lang:~3.0"
compser
目前非常流行的composer就是一个基于命名空间的依赖关系管理工具。能管理php项目所需要的所有依赖关系。composer运行在命令行中,通过简单的命令告诉composer需要哪些组件,composer就会把组件下载下来并自动加载到项目中(免去开发者使用include、require、sp_autoload_register来手动实现自动加载的痛苦)。composer命令安装依赖时会将依赖安装到根目录的vender目录下,自动生成composer.json(定义了当前项目的依赖项,以及依赖项的一些相关信息)和composer.lock文件(列出项目中使用的所有组件以及组件的具体版本号,锁定了项目,让项目只能使用具体版本的php组件)。
如果开发时没有composer,要用到第三方的类库,就必须去下载zip包,然后解压放到相应的目录下,处理好命名空间和自动加载的问题,才能使用。
但有了composer,开发人员只需要几个命令就能获取其他开发者的包,完美的解决了项目的依赖关系,且实现了自动加载。