//单入口文件index.php
<?php
require('config.php'); //配置文件
require('system.php'); //实现框架的核心类、方法
$uri = explode('/', $_SERVER['PATH_INFO']); //取得路由
spl_autoload_register(array(new \App\Web, 'autoload')); //注册自动加载(这里只加载常用的Library库)
\App\Web::lanuch($uri[1], $uri[2], array_slice($uri, 3)); //框架开始
2. [代码]框架实现核心代码
db = new \App\Lib\db; //实例化mysql,因为考虑到web中,基本都会有CURD的操作,所以在框架开始的时候就把mysql的库实例化出来,后面就直接用就是了,当然要在后面按需加载也是可以的哟
$this->load = new \App\Load; //实例一个工具类吧,后面在Controller里需要加载Model,Module等等时会用到
}
public function view($view){ //在Controller里使用的渲染视图时用到的
$this->view = ucfirst($view);
return self::$instance;
}
public function data($data){ // 与上文中有view方法配合使用,传递array变量到视图
extract($data);
require(__DIR__.'/View/'.$this->view.'.view.php');
}
public static function instance(){ //取得Controller的实例instance
return self::$instance;
}
}
class Model{
public function __get($key){
return \App\Controller::instance()->$key;
} //__get魔术方法,比如在Model里面调用db的时候,就会通过这里取得在Controller已经实例好的那个mysql对象哟,不用再重复实例化了;
}
//===========================================================================================================//
class Load{ //相关加载的方法,这里没有做自动加载处理,如果有好的建议请讨论交流哟
public function model($model){
require(__DIR__.'/Model/'.ucfirst($model).'.model.php');
}
public function cache($cache){
require(__DIR__.'/Cache/'.ucfirst($cache).'.cache.php');
}
public function module($module){
require(__DIR__.'/Module/'.ucfirst($module).'.module.php');
}
public function extend($extend){
require(__DIR__.'/Extend/'.ucfirst($extend).'.extend.php');
}
}
UQCMS云商是一款B2B2C电子商务软件 ,非常适合初创的创业者,个人及中小型企业。程序采用PHP+MYSQL,模板采用smarty模板,二次开发,简单方便,无需学习其他框架就可以自行模板设计。永久免费使用,操作简单,安全稳定。支持PC+WAP+微信三种浏览方式,支持微信公众号。
立即学习“PHP免费学习笔记(深入)”;
3. [代码]Home.controller.php
load->model('home'); //加载home模块
$model = new \App\Model\Home; //实例化
$model->showHomeModel(); //调用
// \App\Model\Home::showHomeModel(); 也可以这样调用,但是会有小小的区别,会在最后说明
$this->view('home')->data(array());
}
public static function test(){
echo 'this is a test';
}
}
立即学习“PHP免费学习笔记(深入)”;
4. [代码]Home.model.php
namespace App\Model; //申明App空间下的Model子空间
class Home extends \App\Model{ //继承父层App空间下的Model类
public function showHomeModel(){
echo $this->db->query('use $this->db in home model
');
echo 'this is home model function
';
}
}
立即学习“PHP免费学习笔记(深入)”;
5. [代码]Model模块调用的小小区别说明
showHomeModel(); //在这里申明了要new一个Home.Model的对象实例,那么则会调用Home.Model继承的父类中的db实例, //那么则就是App空间下的Model类的实例 //那么为会么会有这样的区别呢,是不是与static关键字有关呢, //暂时还没有想得好明白,如果大家有什么建议,请分享出来哟;










