php skymvc 一款輕量、簡單的php

來源:互聯網
上載者:User

改架構主要用於實現多個程式員之間的協同開發以及mvc開發模式的實現.skymvc採用mvc開發方式,架構本身易擴充。skymvc作為天網計劃的基礎架構,秉承易用、易學、共同開發的優良傳統,我們致力於打造一款優秀的php
mvc架構。歡迎大家多多提些建議。
1.建立設定檔skyMVC支援自動建立網站目錄:輸入http://locahost/skymvc/install.php 即可自動建立
檔案目錄。如果建立之後想重新建立,刪除install.lock檔案及可。
推薦自動建立。
也可以手動建立:目錄都可以自訂
自訂目錄時需要對程式進行相應的配置
admin 後台目錄
admin/model
admin/ctrl
attach
上傳的附件目錄
ctrl 控制檔案目錄
data 目錄
data/config.php
設定檔
data/cache 緩衝目錄
data/cache/css
css緩衝
data/cache/file檔案快取
data/cache/tpl 模板緩衝
data/cache/js
js緩衝
model 模型檔案目錄
tpl 模板目錄
tpl/admin 後台模板
tpl/default
預設範本
js目錄
plugin 外掛程式目錄
admin.php 後台入口檔案
index.php 前台入口檔案
2.入口檔案

skymvc採用單一入口模式,但不是唯一入口,推薦使用兩個入口。一個是前台入口,一個是後台入口。
1.前台入口檔案執行個體:index.php 檔案名稱可以自訂 推薦 index 或者
default 複製代碼 代碼如下:<?php
require
"data/config.php";//載入設定檔
require("skymvc/skymvc.php");//引用架構檔案
//判斷控制器是否合法
$_GET['m']=isset($_GET['m'])
&&
in_array($_GET['m'],array('index'))?$_GET['m']:'index';
//判斷結束
require_once(CTRL_DIR."/{$_GET['m']}.ctrl.php");
$classname
= $_GET['m'].'Control';
$control = new
$classname();
//配置偽靜態
$control->tpl->rewrite=false;
$control->tpl->rewrite_rule=array(array("/index.php/i"),array("index.html"));
//配置偽靜態結束
$method=isset($_GET['a'])
&& method_exists($control,'on'.$_GET['a'])?
'on'.$_GET['a']:"onDefault";
$control->$method();
?>

2.後台入口檔案:admin.php 檔案名稱可自訂 複製代碼 代碼如下:<?php
require
"data/config.php";
require("skymvc/skymvc.php");
$_GET['m']=isset($_GET['m'])
&&
in_array($_GET['m'],array('index','article'))?$_GET['m']:'index';
require_once(ADMIN_DIR."/".CTRL_DIR."/{$_GET['m']}.ctrl.php");
$classname
= $_GET['m'].'Control';
$control = new
$classname();
//配置偽靜態
$control->tpl->tplid="admin";
$control->tpl->currdir="admin";
$control->tpl->rewrite_on=true;
$control->tpl->rewrite_rule=array(array("/index.php/","index.html"));
$method=isset($_GET['a'])
&& method_exists($control,'on'.$_GET['a'])?
'on'.$_GET['a']:"onDefault";
$control->$method()
?>

說明:前後台入口檔案的差別不大,主要在於 模型 和 控制檔案 所在檔案夾。
3.控制器檔案 複製代碼 代碼如下:<?php
class indexControl extends skymvc
{
function
__construct()
{
$this->indexControl();
}

function
indexControl()
{
parent::__construct();//父類初始化
$this->loadModel("index");
//後台

//$this->loadAdminModel("index");
}
function
onDefault()
{

$this->tpl->assign("welcome","歡迎使用skymvc,讓我們共同努力!");
$this->tpl->assign("who",$_ENV['indexModel']->test());
//後台
//$this->tpl->assign("who",$_ENV['admin_indexModel']->test());
$this->tpl->display("index");
}
?>

4.模型檔案
模型檔案主要用於處理資料,當然也可以處理其他的邏輯,但不推薦。檔案命名規範:類.model.php
如:index.model.php.
模型檔案位於模型目錄下面:如model目錄
例:index.model.php 複製代碼 代碼如下:<?php
class
indexModel
{
public $base;
function
__construct(&$base)
{
$this->indexModel($base);
}
function
indexModel(&$base)
{
$this->base=$base;
$this->db=$base->db;
}
function
test()
{
echo "這是模型測試";
}

}
?>

模型檔案:前後台一樣 就儲存的地方不一樣
5.hello world
kymvc架構的hello word !
如果是自動建立目錄的話。
配置好資料庫
index.php
入口檔案寫好。
index.php內容 複製代碼 代碼如下:<?php
require
"data/config.php";//載入設定檔
require("skymvc/skymvc.php");//引用架構檔案
//判斷控制器是否合法
$_GET['m']=isset($_GET['m'])
&&
in_array($_GET['m'],array('index','article'))?$_GET['m']:'index';//將所有在index.php入口出現的模組都放入array()裡
//判斷結束
require_once(CTRL_DIR."/{$_GET['m']}.ctrl.php");
$classname
= $_GET['m'].'Control';
$control = new
$classname();
$method=isset($_GET['a']) &&
method_exists($control,'on'.$_GET['a'])?
'on'.$_GET['a']:"onDefault";
$control->$method();?>

在ctrl目錄下 建立
hello.ctrl.php 檔案 複製代碼 代碼如下:<?php//hellControl 類得命名規範 類名Control
class
helloControl extends skymvc
{

function __construct()
{
$this->helloControl();
}
function
helloControl()
{
parent::__construct();
$this->loadModel("hello");//載入模型
可以載入任何模型 但不能是相同類的模型
}
//預設執行的動作 命名規範 on函數名
function
onDefault()
{
echo "hello world
"; $this->smarty->display("hello.html");
}
//當m=hello, a=test
執行下面的函數
function
onTest(){
$this->tpl->assign("test",$_ENV['helloModel']->gettest());

$this->tpl->display("hello.html");

}
}?>

在model目錄下
建立hello.model.php 複製代碼 代碼如下:<?php
class helloModel
{
public
$base;
function
__construct(&$base)
{
$this->helloModel($base);
}

function
helloModel(&$base)
{
$this->base=$base;
$this->db=$base->$db;
}
//上面都是不用改的
function gettest(){
return $this->db->getRow("select * from test
limit 1");//讀取資料
}
}
?>

在tpl目錄下 建立 hello.html 複製代碼 代碼如下:<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312"
/>
<title>無標題文檔</title>
</head>
<body>
這是第一個例子:Hello World !
這是測試的例子:{loop $test $t} {$t}
{/loop}
</body>
</html>

skymvc

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.