変更されたフレームワークは主に複数のプログラマ間の共同開発を実現するために使用され、skymvc 開発モデルの実装は mvc 開発手法を採用しており、フレームワーク自体は拡張しやすいです。 Skymvc は、スカイネット プロジェクトの基本フレームワークとして、使いやすさ、学習の容易さ、共同開発という優れた伝統を遵守し、優れた PHP
mvc フレームワークの作成に取り組んでいます。どなたでもご提案をお待ちしております。
1. 設定ファイルの作成 skyMVC は Web サイト ディレクトリの自動作成をサポートしています。 http://locahost/skymvc/install.php と入力すると、
ファイル ディレクトリが自動的に作成されます。作成後に再作成したい場合は、install.lock ファイルを削除すれば可能です。
自動作成を推奨します。
手動で作成することもできます: ディレクトリはカスタマイズ可能です
ディレクトリをカスタマイズする場合は、それに応じてプログラムを構成する必要があります
管理バックエンドディレクトリ
admin/model
admin/ctrl
attach
アップロードされた添付ファイルディレクトリ
ctrl 制御ファイルディレクトリ
データディレクトリ
data/config.php
設定ファイル
data/cache キャッシュディレクトリ
data/cache/css
css キャッシュ
data/cache/file ファイルキャッシュ
data/cache/tpl テンプレートキャッシュ
data/cache/js
jsキャッシュ
モデル モデルファイルディレクトリ
tplテンプレートディレクトリ
tpl/adminバックエンドテンプレート
tpl/default
デフォルトテンプレート
jsディレクトリ
pluginプラグインディレクトリ
admin.phpバックエンドエントリファイル
index.phpフロントエンドエントリーファイル
2. エントリーファイル
skymvc は単一の入口モードを使用しますが、これが唯一の入口ではなく、2 つの入口を使用することをお勧めします。 1 つは正面玄関、もう 1 つは裏口です。
1. フロントエンドエントリーファイルの例:index.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("/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 コードをコピーします。 :
require
"data/config.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="管理者";
$control->tpl->currdir="管理者";
$control->tpl->rewrite_on=true; ;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. コントローラーファイル
コードのコピー コードは次のとおりです:
classindexControl extends skymvc
{
function
__construct()
{
$this->indexControl()
}
function
IndexControl( )
{
parent::__construct();//親クラスの初期化
$this->loadModel("index");
//バックエンド
//$this->loadAdminModel("index") ;
}
function
onDefault()
{
$this->tpl->assign("ようこそ","skymvc へようこそ、一緒に働きましょう!");$this->tpl->assign("who",$_ENV['indexModel']->test());
//バックステージ
//$this->tpl->assign("who" ",$_ENV['admin_indexModel']->test());
$this->tpl->display("index");
}
?>
4. モデルファイル
メインモデルファイルもちろん、データを処理するために使用されますが、他のロジックも処理できますが、お勧めしません。ファイル命名規則: class.model.php
例:index.model.php
モデル ファイルはモデル ディレクトリの下にあります: モデル ディレクトリなど
例:index.model.php
コードをコピーしますコードは次のとおりです
class
indexModel
{
public $base;
__construct(&$base)
{
$this->indexModel($base)
}
function
indexModel(&$) Base)
{
$this->gt ;base=$base;
$this->db=$base->db;
}
function
test()
{
echo "これはモデルテストです";
}
}
?>
モデルファイル:フロントエンドとバックエンドは同じですが、保存場所が異なります
5.hello world
kymvcフレームワークのHello word!
ディレクトリが自動的に作成される場合。
データベースを設定する
index.php
エントリファイルを書き込みます。
index.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"; $method(); ?>
ctrl ディレクトリに
hello.ctrl.php ファイルを作成します
コードをコピーします コードは次のとおりです:
クラス
helloControl は skymvc を拡張します
{
function __construct ()
{
$this->helloControl();
}
function
helloControl()
{
parent::__construct(); loadModel("hello");//モデルをロードします
任意のモデルをロードできますが、同じクラスのモデルはロードできません
}
//関数名のデフォルトのアクション命名規則
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");
}?> モデルディレクトリに
次に、hello.model.php を作成します。 コードをコピーします。 コードは次のとおりです。
class helloModel
{
public
$base; &$base)
{
$this->helloModel($base);
}
関数
helloModel(&$base)
{
$this->base=$base; =$base->$db;
}
//上記
function gettest(){
return $this->db->getRow("select * from test
limit 1") を変更する必要はありません;//データを読み取る
}
}
?>
tpl ディレクトリに新しい hello.html を作成します
コードをコピーします コードは次のとおりです:
PUBLIC "-//W3C// DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd">