SixFramework.php 是整个框架的核心文件,也可以说整个框架就只有这一个文件,这个文件包含了框架的配置以及所有的类。
index.php 是入口文件,当然,你可以自定义。只要在使用框架之前 require 一下 SixFramework.php 就可以了。 一般情况下,index.php 的内容是这样子的:
<?php
// 引入框架的文件
require 'SixFramework.php';
// 启动 SfWork
Sf::load();
// 不加参数的效果相当于 Sf::load('main', 'index');
在 controller/MainController.php 文件中新建一个方法:
<?php
public function newPageAction(){
echo 'This is a new page.';
}
打开浏览器,打开如下页面
http://localhost/SixFramework/index.php?c=main&a=new_page
如果要在其他页面创建超链接,可以用框架的路由构建函数:
<a href="<?php echo Sf::router('main', 'new_page'); ?>">Go to newPage.</a>
当然,这是最简单的例子,下面来添加视图。
在 view/Main/ 目录下创建一个名为 newPage.php 的文件,在里面输入:
<html>
<head>
<title>SixFramework Demo</title>
</head>
<body>
<h1>Hello, Tony!</h1>
<hr />
<p>SixFramework</p>
</body>
</html>
回到控制器 MainController.php 文件,修改 newPageAction 方法:
<?php
public function newPageAction() {
//echo 'This is a new page.';
$this->getView(__FUNCTION__);
}
保存,刷新第一步打开的页面,就可以看到视图文件加载后的效果。
现在来演示如何往视图传入变量。假设你有一个数组和一个字符串变量需要在视图中显示,我们可以在控制器中这么做:
<?php
public function newPageAction() {
//echo 'This is a new page.';
$me = 'Tony';
$girls = array(
'Nido', 'Cindy', 'Kate', 'Lily', 'Lucy', 'Hebe'
);
$this->getView(__FUNCTION__, array(
'me' => $me,
'girls' => $girls,
));
}
在视图文件 view/Main/newPage.php 里,直接这样用就可以了:
<p>My name is <?php echo $me; ?>.</p>
<ul>
<?php foreach($girls as $g){ ?>
<li><?php echo $g; ?></li>
<?php } ?>
</ul>
这一节开始演示数据库操作。首先,我们得创建一个表,例如著名的 student 表,建表语句如下:
CREATE TABLE `student` (
`s_id` INT NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NULL,
`password` VARCHAR(50) NULL,
`age` INT NULL,
`intro` TEXT NULL,
PRIMARY KEY (`s_id`));
表的字段有学生id,用户名,密码,年龄以及个人简介。
根据 student 表创建 Model,一个 Model 的样板如下:
<?php
class model_name extends Db {
public function __construct() {
parent::__construct();
$this->table = __CLASS__;
$this->pk = 'primary_key';
}
public $properties = array(
'properties_name_1',
'properties_name_2',
'properties_name_3',
);
}
Copy一下模板,我们很快写出 student 的 Model:
<?php
class student extends Db {
public function __construct() {
parent::__construct();
$this->table = __CLASS__;
$this->pk = 's_id';
}
public $properties = array(
's_id',
'username',
'password',
'age',
'intro',
);
}
需要注意的是类名必须与表名相同。
下面我们在 controller 目录下新建一个控制器 StudentController.php,代码如下:
<?php
class MainController extends Controller {
?>
添加一个学生管理的视图,html 代码看起来是这样子的:
<h2>添加学生</h2>
<form method="POST" action="<?php echo Sf::router('student', 'add'); ?>">
<p>Username: <input type="text" name="username"></p>
<p>Password: <input type="password" name="password"></p>
<p>Age: <input type="text" name="age"></p>
<p>Introduction: <input type="text" name="intro"></p>
<p><input type="submit" value="添加"></p>
</form>
这里需要注意的是表单提交的地址 ,地址是由 Sf 类的 router 方法生成的,生成的效果如下:
index.php?c=student&a=add
负责添加的动作的代码如下:
<?php
public function addAction() {
// 实例化一个学生表的 model
$m = $this->getModel('student');
// 设置属性
$m->setUsername($_POST['username']);
$m->setPassword($_POST['password']);
$m->setAge($_POST['age']);
$m->setIntro($_POST['intro']);
// 保存
$m->save();
}
对于查询,SixFramework 提供了 find($condition),findAll(),findOneByPk($id) 等方法,下面分别举例。
<?php
public function listAction() {
// 实例化 Model
$m = $this->getModel('student');
// 主键单条记录查询
$s_id = 1;
$student = $m->findOneBySId($s_id);
// 查询所有
$students = $m->findAll();
// 条件查询
$condition = 'where age = 22';
$students_age_22 = $this->find($condition);
// 传入数据,加载视图
$this->getView(__FUNCTION__, array(
'student' => $student,
'students' => $students,
'students_age_22' => $students_age_22,
));
}
删除也很简单,实例化模型后,直接调用 delete($id) 方法即可,代码如下:
<?php
public function deleteAction() {
$s_id = $_GET['s_id'];
$m = $this->getModel('student');
$m->delete($s_id);
}
修改需要注意的是,跟添加一条记录不同,添加的时候直接设置 $model 的属性就可以了, 但修改需要先查询出需要修改的记录(返回的结果是数组形式),然后修改这个数组,最后 用 update($arr) 方法保存修改即可:
<?php
public function updateAction() {
$m = $this->getModel('student');
$student = $m->findOneBySId($_POST['s_id']);
$student['username'] = $_POST['username'];
$student['age'] = $_POST['age'];
$m->update($student);
}
<?php
/**
* 微型PHP框架 SixFramework 使用手册
*
* @Author: Tony Lu <lucups@live.com>
* @Version: 0.0.1
* @Update: 2014-04-05
*/
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。