?作曲家的本意是:作曲的人,特指作为职业的人。当然不是用于艺术创作。官网是这样写的:ADependencyManagerforPHP,简称:PHP的依赖管理工具。相信大多数PHP开发者都用过,那么你了解过它是如何工作的吗?让我们一起来了解一下。Composer项目初始化composer.json{"require":{"monolog/monolog":"2.0.2"},"autoload":{"psr-4":{"Acme\\":"src/"}}}composerinstall$composerinstallindex.php需要__DIR__。'/vendor/autoload.php';useMonolog\Logger;useMonolog\Handler\StreamHandler;//创建日志通道$log=newLogger('name');$log->pushHandler(newStreamHandler('app.log',Logger::WARNING));//添加记录到日志$log->warning('Foo');$log->error('Bar');目录结构.├──composer.json├──composer.lock├──index.php└──vendorcomposer自动加载一行require即可加载整个vendor包,使用起来非常方便。初期化程vendor/composervendor/composer├──ClassLoader.php──LICENSE├──autoload_classmap.php├──autoload_namespaces.php├──autoload_psr4.php├──autoload_real.php├──autoload_static.php└──installed.jsonvendor/autoload.phprequire_once__DIR__。'/composer/autoload_real.php';returnComposerAutoloaderInit1074b760c98f6d9aec2b5c4768fab1ae::getLoader();vendor/composer/autoload_real.phpspl_autoload_register(array('ComposerAutoloaderInit1074b760c98f6d9aec2b5c4768fab1ae','loadClassLoader'),true,true);publicstaticfunctionloadClassLoader($class){if('Composer\Autoload\ClassLoader'===$class){需要__DIR__。'/ClassLoader.php';}}vendor/composer/ClassLoader.phppublicfunctionloadClass($class){if($file=$this->findFile($class)){includeFile($file);返回真;}}/***隔离的范围包括。**防止从包含的文件中访问$this/self。*/functionincludeFile($file){include$file;}演示示例:魔术方法fun动作__autoload($name){echo$name;exit;}newaaa();示例:spl_auto_registerspl_autoload_register(['myClass','run']);classmyClass{publicstaticfunctionrun($name){echo$name;出口;}}$a=newabc();示例:命名空间文件结构.├──Controller│└──UserController.php├──Model│└──UserModel.php└──index.phpUserController.phpnamespaceController;useModel\UserModel;classUserController{publicfunctionindex(){$obj=newUserModel();$db=$obj->index();echo"这是控制器{$db}";}}UserModel.phpnamespaceModel;classUserModel{publicfunctionindex(){return"thisismodel";}}index.phpdefine("APP_ROOT",__DIR__);spl_autoload_register('loader');functionloader($cls){$cls=str_replace("\\","/",$cls);$path=APP_ROOT。"/{$cls}.php";如果(file_exists($path)){returnrequire$path;}echo"{$cls}加载器错误~";退出;}$obj=new\Controller\User控制器();$obj->索引();结语:当我们不仅精通composer的使用,而且了解它的原理和编码,何乐而不为呢?
