ecmall是一个基于mvc模式框架系统,跟thinkphp有点像。先从ecmall的入口开始,ecmall入口文件upload/index.php、admin.php:
index.php启动ecmall前台,启动后则进入ecmall框架核心文件ecmall.php. ecmall.php相当于一个调度中心,接收不同的控制命令(app)以及命令的相关操作(funciton),接着对其进行分配处理。然后调度中心把这些命令(app)和方法(function) 传到前台控制中心对应的具体控制器上。"控制器"接收到命令后,开始实施执行控制,接着把处理后的结果传给view模板文件(模板命名规则:appname.fucname.html)。
其中控制器接收到命令执行过程中,可以调用调度中心的模型获取方法&m()实例化一个模型,进行数据的curd操作。
index.php:
include(ROOT_PATH . '/eccore/ecmall.php'); /* 启动ECMall */ ECMall::startup(array( 'default_app' => 'default', 'default_act' => 'index', 'app_root' => ROOT_PATH . '/app', //加载系统所需要的基础类 'external_libs' => array( ROOT_PATH . '/includes/global.lib.php', ROOT_PATH . '/includes/libraries/time.lib.php', ROOT_PATH . '/includes/ecapp.base.php', ROOT_PATH . '/includes/plugin.base.php', ROOT_PATH . '/app/frontend.base.php', ), ));
ecmall.php:
class ECMall { /* 启动 */ function startup($config = array()) { /* 加载初始化文件 */ require(ROOT_PATH . '/eccore/controller/app.base.php'); //基础控制器类 require(ROOT_PATH . '/eccore/model/model.base.php'); //模型基础类 if (!emptyempty($config['external_libs'])) { foreach ($config['external_libs'] as $lib) { require($lib); } } /* 数据过滤 */ if (!get_magic_quotes_gpc()) { $_GET = addslashes_deep($_GET); $_POST = addslashes_deep($_POST); $_COOKIE= addslashes_deep($_COOKIE); } /* 请求转发 */ $default_app = $config['default_app'] ? $config['default_app'] : 'default'; $default_act = $config['default_act'] ? $config['default_act'] : 'index'; $app = isset($_REQUEST['app']) ? trim($_REQUEST['app']) : $default_app; $act = isset($_REQUEST['act']) ? trim($_REQUEST['act']) : $default_act; $app_file = $config['app_root'] . "/{$app}.app.php"; if (!is_file($app_file)) { exit('Missing controller'); } require($app_file); define('APP', $app); define('ACT', $act); $app_class_name = ucfirst($app) . 'App'; /* 实例化控制器 */ $app = new $app_class_name(); c($app); $app->do_action($act); //转发至对应的Action $app->destruct(); } } //根据app后面所跟的参数,来判断加载对应的控制器类文件,类文件在app文件夹下,对应名称与参数相同,act后面的参数是对应控制器中的操作方法处理请求 //而对应的动作中,会有一个判断: if (!IS_POST){请求前的页面内容的显示}else{请求后的表单处理及处理完成后的页面跳转}。其中包括使用json处理数据 //这里需要提出的是:在控制器中: $this->assign('order', $order_info); //向模板页传递所需要参数的值 $this->display('buyer_order.confirm.html');//跳转到哪个页面 $this->json_result($new_data, 'confirm_order_successed');//使用json的方式传递参数,然后在页面上使用javascript处理请求的跳转
由于这个机制,ECMALL中可以自行添加APP,模块,插件等。如何在ECMALL中添加自己的APP呢?比如访问地址为http://xxx.com/index.php?app=hello
- 在ecmall的app目录下建立一个新的名称为hello.app.php的应用文件
- 在languages的sc-utf8的目录下建立对应的语言文件 hello.lang.php ,并返回数组 (若不建立,会出错)
- hello.app.php中的类为HelloApp,并继承FrontendApp
- 此为前端程序,在ecmall的themes/mall/default文件夹下建立一个hello.index.html模板文件
- 重写默认的index方法,可以使用模板的方式输出:
- 编写其他方法比如访问地址为http://xxx.com/index.php?app=hello&act=test
$h = "Hello"; $this->assign("h",$h); $this->display('hello.index.html');
这个URL访问的名为hello的app类中的test方法,其实http://xxx.com/index.php?app=hello默认访问的是index方法。
//1、在upload/app/下建立一个test.app.php <?php class TestApp extends MallbaseApp { public function index() { $str="hello world"; $uc_first= ucfirst($str).'<br>'; $uc_words=ucwords($str).'<br>'; $Model=&m('goods'); $res=$Model->get(27); print_r($res); $this->assign('ss',$uc_first); $this->assign('sss',$uc_words); $this->display('test.index.html'); } } ?> //2、在upload/languages/sc-utf-8/下建立一个test.lang.php <?php return array(); ?> // 3、在upload/themes/mall/default/建立一个test.index.html
admin.php这是启动ecmall后台。启动后也进入ecmall框架核心文件ecmall.php。之后的操作跟前台差不多,区别是调度中心把命令传给"后台"控制中心。但控制器调用的模型是同一个模型中心。

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版
中文版,非常好用

Dreamweaver Mac版
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。