輕巧,易於使用的PHP框架來構建網站和Web應用程序。
Sippy的體系結構與Codeigniter具有驚人的相似之處,因此我們稱其為輕量級PHP框架。但是,請記住,由於吸收是輕量級的,因此不包括代碼簽名器隨附的許多功能。也許我們可以通過插件,控制器和庫添加“插件n-play”功能。要使用application/config/config/sample.config.php中的config刪除“示例”,以便它是application/config/config/config.php並填寫配置數據。
Sippy基於模型觀察器開發模式。
您的應用程序特定文件轉到“應用程序”文件夾中(您無需觸摸系統文件夾)。在應用程序文件夾中,所有特定應用程序實體都有文件夾:
配置控制器幫助者日誌模型插件視圖
當Sippy加載文件時,假定它們在相應的文件夾中。因此,請確保將文件放在正確的文件夾中。
我們鼓勵您在根部使用“資產”文件夾來存儲靜態資源文件(CSS,JS等),但是您可以將它們放置在任何地方。您還可以使用site_url()函數來幫助將文件包括在html中,或使用site_url('main/index')轉到http://www.yoursite.com/main/index page。例如:
< link rel =" stylesheet " href =" <?php echo site_url(); ?>assets/css/style.css " type =" text/css " media =" screen " />吸引人的所有課程都使用pascalcase命名。除了所有較低情況外,關聯的文件名必須相同。因此,例如,班級班級將具有fileName mainclass.php。課堂中的下劃線也必須包括在文件名中。
默認情況下,Sippy中的URL設計為搜索引擎和人類友好。 Sippy不使用標準的“查詢字符串”方法來代替動態系統的代名詞,而是使用基於段的方法:
example.com/class/function/param默認情況下index.php隱藏在URL中。這是使用根目錄中的.htaccess文件完成的。
只需將文件放入您的項目中以便便捷身份驗證:https://github.com/trafficinc/sippy-auth
控制器是吸管應用的驅動力。從URL結構中可以看到,URL的片段被映射到類和功能。這些類是存儲在“應用程序/控制器”目錄中的控制器。因此,例如URL ...
example.com/main/login ...將使用文件名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!”。
可以在application/config/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````requient system_dir。 ''/versedation.php'; ###### - 班級 - 保護$驗證;
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中,視圖只是一個網頁。它們可以包含普通網頁所包含的所有內容。視圖幾乎總是由控制器加載。因此,例如,如果您的視圖稱為main_view.php,其中包含以下html:
<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.
}
?> 在吸管模型中是處理數據(通常來自數據庫)的類,提供了一個示例數據庫,將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) - 從查詢返回一排getrowobj($query) - 返回一行作為對象execute($query) - 返回查詢的直接結果escape($string) - 在查詢中使用它們之前逃脫字符串insert($table, $dataArray) - 插入帶有數組的表中HTML輔助器中有一個烘烤的烘烤,您可以通過$ this-> html-> esc()在控制器和視圖中使用,然後在您的URL中使用Sippy時,請轉到URL MAIN/TEST,以查看可用的功能。
您可以在Sippy中使用兩種類型的其他資源。
助手是可以使用的類,這些類別不屬於“控制器”類別。這些通常是提供可以在控制器中使用的額外功能的類。 Sippy帶有輔助類(session_helper和url_helper),這是如何使用助手的示例。
插件實際上是任何PHP文件,可以提供您想要的任何功能。通過加載插件,您可以簡單地包含“插件”文件夾的PHP文件。如果您想在您的吸管應用程序中使用第三方庫,這將很有用。
如何使用,在控制器中...
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();
}
為了擴大吸管,可以選擇添加“鉤子”。掛鉤使您可以擴展整個框架和/或添加功能。要激活“掛鉤”,請進入您的config.php文件並啟用它。然後在config/hooks.php文件中添加您的掛鉤函數。鉤子是全球的,其中三個。 before_system (在系統調用之前加載), before_controller (控制器之前加載)和after_controller (在控制器後加載)。這是一個例子...
// in hooks.php file
$ hook [ ' before_system ' ] = function () {
echo " hello world " ;
};這個掛鉤將在全球範圍內加載此功能,上面寫著“ Hello World”。由於您只能一次加載掛鉤,如果您有多個函數要致電,則可以像這樣堆疊它們...
//... your functions ... function func1() {...do stuff...}
$ hook [ ' before_system ' ] = function () {
func1 ();
func2 ();
func3 ();
};$ php bin/sippy.php [選項]
嘗試
$ php bin/sippy.php -help