举个按关键词搜索结果分页的例子,
1.视图HTML
代码如下 | 复制代码 |
<div id="body"> |
即表单提交到名叫search的controller和名叫index的方法, 其中包含了一些动态参数,不是纯列表,故相对比较复杂,后面会提到。
代码如下 | 复制代码 |
public function index() { if (empty ( $offset )) { if (! empty ( $keyword )) { $per_page = 10; $this->pagination->initialize ( $config ); |
因为config.php中默认的enable_query_strings是false, 起始位置始终在最后,这样出来的结果类似/index.php/search/index/?s=中国/10,页码取不到,需要将此配置改为false;
3.模型
代码如下 | 复制代码 |
public function find_by_name($name, $per_page=0, $offset = 0, $is_total = false) { if ($is_total) {//总数 $query = $this->db->query ( "select count(id) as cnt from {$this->_book} where book_name like '%{$name}%'" ); if ($query->num_rows () > 0) { $row = $query->row (); $ret = $row->cnt; } }else{//列表 $query = $this->db->query ("select * from {$this->_book} where book_name like '%{$name}%' limit {$offset}, {$per_page}"); $ret = $query->result (); } return $ret; } |
有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在mysql里如果要想取出表内某段特定内容可以使用的 T-SQL语句:select * from table limit offset,rows来实现。这里的offset是记录偏移量,它的计算方法是offset=$pagesize*($page-1),rows是要显示的记录条数,这里就是$page。也就是说select * from table limit 10,10这条语句的意思是取出表里从第11条记录开始的20条记录。
代码如下 | 复制代码 |
<?php $this->totalNum = $count;//总记录数 $this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true; }else if($this->pageNo > $this->pageCount - 4){ /*** ?> |
css
代码如下 | 复制代码 |
<style type="text/css"> --> |
使用方法
代码如下 | 复制代码 |
$pageNo = $_GET['pageNo'];
|
下面再介绍一个分页类
代码如下 | 复制代码 |
<?php |
调用方法
代码如下 | 复制代码 |
<?php |
在下载文件中加入下段代码即可解决
代码如下 | 复制代码 |
$name = rawurlencode($filename); |
实例1
代码如下 | 复制代码 |
<?php |
实例2
代码如下 | 复制代码 |
<?php /** /** } } /** if (!file_exists(filename)) { } /** /** /** |
实例3
这个比较高级了,不但可以实现文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录,还可以实现移动目录, copy,替换等操作。
代码如下 | 复制代码 |
<?
// 函数名: writefile // 函数名: movefile function movedir($dir,$destdir,$overwrite=1,$bak=0){ // 函数名: move function move($file,$path,$overwrite=1,$bak=0) // 函数名: delforder function delforder($file) { // 函数名: notfate_mkdir
// 函数名: notfate_any_mkdir
} |
基于 PHP5.3
PHP 的类及其实例:
代码如下 | 复制代码 |
public $prop = 123; } $obj = new Myclass(); |
类的成员属性(属性的称呼相对于“方法”而言)包括类常量和类变量,其中类常量在定义时不可为空,类的属性在定义时如果被赋值,只能使用标量和数组,并且不能是表达式,因为类属性在编译期被初始化,PHP 在编译期不执行表达式。
1、成员的访问控制:
public:可以继承,可以在类的方法之外被访问 , 如 $obj->prop;
protected:可以继承,不可以在类的方法之外被访问
private:不可以继承,不可以在类的方法之外访问
PHP 4 使用 var 来声明类的属性,在PHP5之后不再使用,PHP5.3之前使用被警告,PHP5.3之后可以用在 public 之前或单独使用作为 public 的别名。
这三个访问控制关键字也可以修饰构造函数,当 private 和 protected 修饰类的构造函数时,你只能通过一个 publice static 的静态方法来调用构造函数以实例化对象,因为够在函数无法在类之外被访问了,比如,单例类的实现:
代码如下 | 复制代码 |
class Singleton { } public static function getInstance(){ return self::$instance; public function __clone(){ //pretend clone oprationg //new Singleton(); // Error
|
2、继承禁止: final 关键字,仅用于修饰类或类的方法
如果一个类被 final 修饰,这个类不能被继承,如果一个方法被final 修饰,则这个方法不能被子类重写(override)。
代码如下 | 复制代码 |
class Myclass{ public $prop = 123; final public static function methodA(){//不可继承的,公开的静态方法 return 'this is a final method'; } } |
3、抽象类和抽象方法:abstract 仅用于 类和方法,抽象类不能直接用于实例化对象只能用于产生子类
代码如下 | 复制代码 |
abstract class Myclass{ public $prop = 123; abstract public function methodA(); //抽象方法没有实现函数体 } |