1.基础准备
新建文件夹test,在文件夹下新建文件 composer.json:
{ "require": { } }
命令行切换到 test 目录下,运行:
composer update
出现文件夹vendor,Composer 初始化成功!
2.构建路由
框架的本质就是路由
开始自己来构建路由,先去 GitHub 搜一下:点此查看搜索结果
使用noahbuscher/Macaw
更改 composer.json:
{ "require": { "noahbuscher/macaw": "dev-master" } }
运行 composer update,test/vender得到目录noahbuscher,Macaw 包安装成功!
新建test/web 文件夹,这个文件夹将是用户唯一可见的部分。在文件夹下新建 index.php 文件:
<?php //自动载入 require '../vendor/autoload.php'; //路由配置 require '../config/routes.php'; ?>
新建 test/config 文件夹,在里面新建 routs.php 文件
<?php use /NoahBuscher/Macaw/Macaw; Macaw::get('/', function() { echo 'Hello world!'; }); Macaw::get('(:all)', function($fu) { echo '未匹配到路由<br>'.$fu; }); Macaw::dispatch(); ?>
在地址栏,输入127.0.0.1/test/web/
出现Hello world!
3.设计MVC
新建 test/app 文件夹,在 app 中创建 controllers、models、views 三个文件夹,开始正式开始MVC
(1)Controller
新建 controllers/BaseController.php 文件:
<?php /** * BaseController */ class BaseController { public function __construct() { } }
新建 controllers/HomeController.php 文件:
<?php /** * /HomeController */ class HomeController extends BaseController { public function home() { echo "<h1>控制器成功!</h1>"; } }
rotues.php中添加一条路由,Macaw::get(‘/’, [email protected]‘);
运行 composer dump-autoload
刷新
(2)Model
新建 models/Article.php 文件
<?php error_reporting(E_ALL ^ E_DEPRECATED); class Article{ public static function first(){ $connection=mysql_connect("localhost",'root','root'); if(!$connection){ die('Could not connect:'.mysql_error()); } mysql_set_charset("UTF8",$connection); mysql_select_db("lulucms",$connection); $result=mysql_query("select * from yii_page limit 0,1"); if($row=mysql_fetch_array($result)){ echo '<h1>'.$row['title'].'</h1>'; echo '<p>'.$row['summary'].'</p>'; } mysql_close($connection); } } ?>
修改controllers/HomeController.php 文件:
<?php class HomeController extends BaseController{ public function home(){ Article::first(); } } ?>
运行composer dump-autoload
刷新
(3)View
修改 models/Article.php 为:
<?php error_reporting(E_ALL ^ E_DEPRECATED); class Article{ public static function first(){ $connection=mysql_connect("localhost",'root','root'); if(!$connection){ die('Could not connect:'.mysql_error()); } mysql_set_charset("UTF8",$connection); mysql_select_db("lulucms",$connection); $result=mysql_query("select * from yii_page limit 0,1"); if($row=mysql_fetch_array($result)){ return $row; } mysql_close($connection); } } ?>
修改 HomeController:
<?php class HomeController extends BaseController{ public function home(){ $row=Article::first(); require dirname(__FILE__).'/../views/home.php'; } } ?>
新建 views/home.php 文件
<?php echo '<h1>'.$row['title'].'</h1>'; echo '<p>'.$row['summary'].'</p>'; ?>
刷新
MVC构造完成
4.数据库封装–使用ORM 包
使用Laravel 的 Eloquent
安装 illuminate/database
给 composer.json 增加一个 require 项
"illuminate/database": "*"
修改 web/index.php
<?php use Illuminate/Database/Capsule/Manager as Capsule; //自动载入 require '../vendor/autoload.php'; // $capsule=new Capsule; $capsule->addConnection(require '../config/database.php'); $capsule->bootEloquent(); //路由配置 require '../config/routes.php'; ?>
新增 config/database.php
<?php return [ 'driver'=>'mysql', 'host'=>'localhost', 'database'=>'lulucms', 'username'=>'root', 'password'=>'root', 'charset'=>'utf8', 'collation'=>'utf8_general_ci', 'prefix'=>'yii_' ]; ?>
修改 models/Article.php
<?php class Article extends Illuminate/Database/Eloquent/Model{ public $timestamps=false; protected $table = 'page'; } ?>
controllers/HomeController.php 无需改动
刷新
框架构造完成
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20423.html