批改状态:合格
老师批语:composer与php相互成全, 现在是黄金搭档
Framework Interoperability Group(框架可互用性小组),简称 FIG,成立于 2009 年。FIG 最初由几位知名 PHP 框架开发者发起,在吸纳了许多优秀的大脑和强健的体魄后,提出了 PSR-0 到 PSR-4 五套 PHP 非官方规范:
PSR-0 (Autoloading Standard) 自动加载标准
PSR-1 (Basic Coding Standard) 基础编码标准
PSR-2 (Coding Style Guide) 编码风格向导
PSR-3 (Logger Interface) 日志接口
PSR-4 (Improved Autoloading) 自动加载优化标准
composer init,按照提示一步一步操作,首先是包名,描述,作者,附加信息,包的内容,协议(是否免费),是否需要安装依赖,是否需要开发者的依赖
PS C:\Users\admin\Desktop\php11\PHP\5.18> composer initWelcome to the Composer config generatorThis command will guide you through creating your composer.json config.Package name (<vendor>/<name>) [admin/5.18]: nicola/phpDescription []: 这是我的第一个框架开发,希望一切顺利Author [, n to skip]: nicola <1228994040@qq.com>Minimum Stability []:Package Type (e.g. library, project, metapackage, composer-plugin) []: libraryLicense []: MITDefine your dependencies.Would you like to define your dependencies (require) interactively [yes]? noWould you like to define your dev dependencies (require-dev) interactively [yes]? no{"name": "nicola/php","type": "library","license": "MIT","authors": [{"name": "nicola","email": "1228994040@qq.com"}],"require": {}}Do you confirm generation [yes]? yes
composer install:从当前目录读取 composer.lock 文件,处理依赖关系,并安装到 vendor 目录下。如果没有这个文件,就安装 json 的包,并创建 lockrequire命令增加新的依赖包到当前目录的 composer.json 文件中,生成 vender 文件和 lockcomposer create-project laravel/laravel,在当前目录下创建一个项目,命令后面可以增加自定义的目录,例如composer create-project laravel/laravel blogscomposer dump-autoload当修改项目下的 composer.json 的文件,并不一定要运行 composer update 命令进行更新,有的时候可以使用该命令来更新加载器,比如要引用本地自定义的包(不是来自于 packagist)。
{"autoload": {"psr-4": {"controllers\\": "app/controllers"}}}
命令简写
composer dump
autoload 组件。注意composer.json只能用双引号!

<?php//命名空间,包名称namespace controllers;class StaffsController{public function index(){return 'Hello,Nicola,php.cn';}}
<?phprequire 'app/controllers/StaffsController.php';use controllers\StaffsController;//控制器已经测试好了echo (new StaffsController)->index();echo '<hr>';

<?phpnamespace models;class StaffsModel{public function index(){return 'nicola';}}
<?phprequire 'vendor/autoload.php';use controllers\StaffsController;use models\StaffsModel;//控制器已经测试好了echo (new StaffsController)->index();echo '<hr>';//测试模型echo (new StaffsModel)->index();echo '<hr>';

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>员工管理系统</title></head><body><h3>员工管理系统</h3></body></html>
<?phprequire 'vendor/autoload.php';use controllers\StaffsController;use core\View;use models\StaffsModel;//控制器已经测试好了echo (new StaffsController)->index();echo '<hr>';//测试模型echo (new StaffsModel)->index();echo '<hr>';//视图echo (new StaffsController)->display();

composer dump-autoloadcomposer dump-autoload,让其读取自动加载生效!(关键!关键!关键!)
{"autoload": {"psr-4": {"controllers\\": "app/controllers","models\\": "app/models","views\\": "app/views","core\\": "core"}}}
composer require catfan/medoocomposer require league/plates
<?phpnamespace core;use Medoo\Medoo;//公共模型class Model extends Medoo{//构造方法public function __construct(){$options = ['database_type' => 'mysql','database_name' => 'php','server' => 'localhost','username' => 'root','password' => 'root123456'];parent::__construct($options);}}
在控制器中初始化 model 类,看一下控制器中是否将模型 use 进去,然后将初始化的 model 类放入一个变量当中,然后输出看看是否能输出数据库的信息,如果有说明链接成功了
如果有报错,记得检查是否已经处理类库映射

<?phpnamespace core;use League\Plates\Engine;//公共视图class View extends Engine{private $templates;public function __construct($path){$this->$templates = parent::__construct($path);}}

<?php//命名空间,包名称namespace controllers;class StaffsController{public $model;public $view;public function __construct($model, $view){$this->model = $model;$this->view = $view;}public function index(){return 'Hello,Nicola,php.cn';}public function display(){include 'app/views/staffs/list.php';}public function select(){$staffs = $this->model->select('staffs', ['id', 'name', 'position', 'mobile'], ['id[>=]' => 5, 'LIMIT' => 10]);return $this->view->render('staffs/list', ['staffs' => $staffs]);}}

<?phprequire 'vendor/autoload.php';use controllers\StaffsController;use core\View;use models\StaffsModel;// 模型处理$model = new StaffsModel();// var_dump($model);//视图$view = new View('app/views');// var_dump($view);//查询$controller = new StaffsController($model, $view);// var_dump($controller);echo $controller->select();

Composer 就是 PHP 框架的未来,框架是为了提升我们的应用开发效率。PHP 语言本身就带有强大的网络功能、文件管理功能和丰富的系统 API,Composer 也只是一段 PHP 脚本而已。从使用框架是为了提高开发效率的角度来看,框架的本质就是路由。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号