轻巧,易于使用的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