ウェブサイトやWebアプリを構築するための軽量で使いやすいPHPフレームワーク。
Sippyのアーキテクチャは、Codeigniterに似ていることを掘り下げているため、軽量のPHPフレームワークと呼びます。ただし、Sippyは軽量であるため、Codeigniterに付属する多くの機能は含まれていないことを忘れないでください。プラグイン、コントローラー、ライブラリを介して「プラグアンドプレイ」機能を追加できるかもしれません。使用するには、application/config/sample.config.phpのconfigファイルから「サンプル」を削除して、アプリケーション/config/config.phpになり、構成データに入力します。
Sippyは、モデルビューコントローラー開発パターンに基づいています。
アプリケーション固有のファイルは、「アプリケーション」フォルダーに移動します(システムフォルダーにタッチする必要はありません)。アプリケーションフォルダー内には、すべての特定のアプリケーションエンティティのフォルダーがあります。
構成コントローラーヘルパーログモデルプラグインビュー
Sippyがファイルをロードすると、対応するフォルダーにあると仮定します。そのため、ファイルを正しいフォルダーに配置してください。
Rootの「Assets」フォルダーを使用して、静的リソースファイル(CSS、JSなど)を保存することをお勧めしますが、どこにでも置くことができます。また、 site_url()関数を使用して、htmlにファイルを含めるか、 site_url('main/index')を使用してhttp://www.yoursite.com/main/indexページに移動することもできます。例えば:
< link rel =" stylesheet " href =" <?php echo site_url(); ?>assets/css/style.css " type =" text/css " media =" screen " />Sippyのすべてのクラスは、Pascalcaseの命名を使用します。関連するファイル名は、すべての小文字を除いて同じでなければなりません。たとえば、クラスのメインクラスにはファイル名MainClass.phpがあります。クラスのアンダースコアもファイル名に含める必要があります。
デフォルトでは、SippyのURLは、検索エンジンで人間に優しいように設計されています。 Sippyは、動的システムと同義のURLに標準の「クエリ文字列」アプローチを使用するのではなく、セグメントベースのアプローチを使用します。
example.com/class/function/paramデフォルトでindex.phpがURLに隠されています。これは、ルートディレクトリの.htaccessファイルを使用して実行されます。
簡単な認証のためにプロジェクトにファイルを入力するだけです:https://github.com/trafficinc/sippy-auth
コントローラーは、シッピーアプリケーションの原動力です。 URL構造からわかるように、URLのセグメントはクラスと機能にマッピングされます。これらのクラスは、「アプリケーション/コントローラー」ディレクトリに保存されているコントローラーです。たとえば、URL ...
example.com/main/login ... Filename main.phpで次のコントローラーにマッピングされます。
<?php
class Main extends Sippy_controller {
function index () {
// This is the default function (i.e. no function is set in the URL)
}
function login () {
echo ' Hello World! ' ;
}
}...そして出力は「Hello World!」になります。
デフォルトのコントローラーとエラーコントローラーは、アプリケーション/config/config.phpで設定できます
コンストラクターを宣言する必要がある場合は、次のような親コンストラクターも呼び出す必要があることに注意してください。
<?php
class Example extends Sippy_controller {
public function __construct ()
{
parent :: __construct ();
// Your own constructor code
}
}
?>コントローラーでも使用できるヘルパー機能がいくつかあります。これらの関数のほとんどは、対応するクラスのパラメーター$名を取得します。
ログエラーとデバッグ情報
次に、デバッグのためにこのコードをコントローラーに追加できます。
log_message('error','Your log message');log_message('debug','Your log message');例コントローラーの検証&CSRFトークン保護とフラッシュエラー/成功メッセージ:#controller `` `require system_dir。 '/validation.php'; ######-クラス - 保護された$ validation;
function __constructor() {
$this->validation = new Validation;
}
$data['messSuccess'] = $this->flash->message('success');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['csrf'] === $_SESSION['csrf_token']) {
$validator = $this->validation->go($_POST, [
'email' => 'required|min:5',
'password' => 'required',
]);
if (count($validator) > 0) {
$data['errors'] = $validator;
} else {
// ** Do Stuff **
$this->flash->message('success','Your flash message here');
$this->redirect('auth/login');
}
}
}
```
#ビュー
<h1>Login</h1>
<?php
if (isset($messSuccess)) {
$this->success_block($messSuccess);
}
if (isset($errors)) {
$this->error_block($errors);
}
?>
<form method="post" action="<?php echo site_url('auth/login'); ?>">
<input type="hidden" name="csrf" value="<?php echo $this->security->generate_csrf_token(); ?>"/>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" name="email" class="form-control" id="email" placeholder="Email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
</div>
<button type="submit" class="btn btn-default">Login</button>
</form>
Sippyでは、ビューは単なるWebページです。通常のWebページに含まれるすべてのものを含めることができます。ビューはほとんどの場合、コントローラーによってロードされます。たとえば、次のHTMLを含むmain_view.phpというビューがある場合:
<html>
<head>
<title>My Site</title>
</head>
<body>
<h1>Welcome to my Site!</h1>
</body>
</html>
. . . you would load it in a controller by doing the following:
// Controller file...
<?php
class Main extends Sippy_controller {
function index ()
{
$ template = $ this -> View ( ' main_view ' );
$ template -> render ();
}
}ビュークラスにはset($key, $val)と呼ばれるヘルパー関数があります。これにより、コントローラーからビューに変数を渡すことができます。
$ template = $ this -> View ( ' main_view ' );
$ template -> set ( ' someval ' , 17 );
$ template -> render ();...その後、あなたはできるビューで:
<?php echo $someval; ?>
...そして、出力は17になります。あらゆる種類のPHP変数を、この方法でビューに渡すことができます:アレイなど。
または
コントローラーでは、データを使用してビューを呼び出すことができます。これは方法で達成できます。コントローラーで...
$ header = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ d );ビューでは、これらの配列アイテムにはようにアクセスできます...
<?php echo $title; ?>
これには、「マイタイトル」というテキストが表示されます。
ビュー内のデータにアクセスする好ましい方法は、データ配列に名前を付けて、そのようなコントローラーにアクセスすることです...
$ data [ ' body ' ] = " Hello World " ;
$ data [ ' heading ' ] = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ data );それからビューで...
//body can be accessed
<?php echo $ body ; ?>
//heading can be accessed as an array
<?php
foreach ( $ heading as $ head ) {
echo $ head [ ' title ' ];
. . . etc.
}
?> Sippyモデルはデータ(通常データベースから)を扱うクラスであり、サンプルデータベースが提供され、testdb.sqlファイルを続編Proまたは選択したSQL GUIにロードします。例えば:
<?php
class Example_model extends Sippy_model {
public function getSomething ( $ id )
{
$ id = $ this -> escape ( $ id );
$ result = $ this -> query ( " SELECT * FROM something WHERE id=' { $ id } ' " );
return $ result ;
}
}
?>...その後、コントローラーで行う:
function index ()
{
$ example = $ this -> Model ( ' Example_model ' );
$ data [ ' something ' ] = $ example -> getSomething ( $ id );
$ template = $ this -> View ( ' main_view ' , $ data );
$ template -> render ();
}これで、データベースクエリの結果は、$ somevalでビューで利用できます。 MySQLデータベースへの接続はconfig/config.phpファイルで実行できます( sample.config.phpファイルの名前を変更することを忘れないでください):
$ config [ ' db_host ' ] = '' ; // Database host (e.g. localhost)
$ config [ ' db_name ' ] = '' ; // Database name
$ config [ ' db_username ' ] = '' ; // Database username
$ config [ ' db_password ' ] = '' ; // Database passwordモデルでも使用できるヘルパー関数がいくつかあります。
query($query) - クエリから一連の結果を返しますgetrow($query) - クエリから1行を返しますgetrowobj($query) - 行をオブジェクトとして返しますexecute($query) - クエリから直接結果を返しますescape($string) - クエリで使用する前に文字列をエスケープしますinsert($table, $dataArray) - 配列付きのテーブルに挿入htmlヘルパーには、$ this-> html-> esc()などでコントローラーやビューで使用できるベイクドがあります。Sippyを実行するときにURLにアクセスして、利用可能な機能を確認します。
Sippyで使用できる追加のリソースには2つのタイプがあります。
ヘルパーは、「コントローラー」のカテゴリに該当しないクラスです。これらは通常、コントローラーで使用できる追加の機能を提供するクラスです。 Sippyには、ヘルパーの使用方法の例であるヘルパークラス(session_helperおよびurl_helper)が付属しています。
プラグインは文字通り任意のPHPファイルであり、必要な機能を提供できます。プラグインをロードすることにより、「プラグイン」フォルダーからPHPファイルを単に含めるだけです。これは、Sippyアプリケーションでサードパーティライブラリを使用する場合に役立ちます。
コントローラーでの使用方法...
protected $sess;
public function __construct() {
parent::__construct();
$this->Helper('Session_helper');
$this->sess = new Session_helper;
}
public function sample() {
$this->sess->set('email', '[email protected]'); //set session variable
$this->sess->get('email'); //get session variable
$this->sess->destroy(); //destroy session, good for logout method
}
コントローラーでの使用方法...
public function __construct() {
parent::__construct();
$this->Plugin('Mailer');
}
public function sample() {
$send = Mailer::make()
->setTo('[email protected]', 'ToPerson')
->setFrom('[email protected]', 'Sippy')
->setSubject('Hello World Test')
->setMessage('Test message form sippy')
->setHtml()
->setWrap(100)
->send();
}
Sippyを拡張するには、「フック」を追加するオプションがあります。フックを使用すると、フレームワーク全体を拡張したり、機能を追加したりできます。 「フック」をアクティブにするには、config.phpファイルに移動して有効にします。次に、config/hooks.phpファイルでフック機能を追加します。フックはグローバルで、そのうち3つがあります。 before_system (システムコールの前にロード)、 before_controller (コントローラーの前にロード)、およびafter_controller (コントローラーの後にロード)。これが例です...
// in hooks.php file
$ hook [ ' before_system ' ] = function () {
echo " hello world " ;
};このフックは、「Hello World」と書かれたこの関数をグローバルにロードします。 1回しかフックをロードできないので、呼び出す複数の関数がある場合は、そのように積み重ねることができます...
//... your functions ... function func1() {...do stuff...}
$ hook [ ' before_system ' ] = function () {
func1 ();
func2 ();
func3 ();
};$ php bin/sippy.php [options]
試す
$ php bin/sippy.php -help