什么是模型?

模型是专门用来和数据库打交道的PHP类。例如,假设你想用CodeIgniter来做一个Blog。你可以写一个模型类,里面包含插入、更新、删除Blog数据的方法。下面的例子将向你展示一个普通的模型类:

class Blogmodel extends CI_Model {

var $title   = ”;
var $content = ”;
var $date    = ”;

function __construct()
{
parent::__construct();
}

function get_last_ten_entries()
{
$query = $this->db->get(‘entries’, 10);
return $query->result();
}

function insert_entry()
{
$this->title   = $_POST[‘title’]; // 请阅读下方的备注
$this->content = $_POST[‘content’];
$this->date    = time();

$this->db->insert(‘entries’, $this);
}

function update_entry()
{
$this->title   = $_POST[‘title’];
$this->content = $_POST[‘content’];
$this->date    = time();

$this->db->update(‘entries’, $this, array(‘id’ => $_POST[‘id’]));
}

}

注意: 上面用到的函数是 Active Record 数据库函数.

备注: 为了简单一点,我们直接使用了$_POST。不过,这不太好,平时我们应该使用 输入类:$this->input->post(‘title’)

Read More →

简而言之,一个视图就是一个网页,或是网页的部分,如头部,底部,侧边栏等等。事实上,如果你需要这种层次类型,视图可以很灵活的嵌入到其他视图中。

视图从不直接调用,必须被一个控制器来调用。记住,在一个 MVC 框架中,控制器扮演着交通警察的角色,那么,他有责任去取回某一特定的视图。如果你还没有阅读过控制器页面的话,你应该事先阅读控制器页面。

下面使用你在控制器页面已经创建过的示例控制器,让我们来给他添加个视图。

创建视图

使用你的文本编辑器,创建一个名为 blogview.php 的文件,写入以下代码:

然后保存文件到 application/views/ 文件夹。

载入视图

你必须使用下面的函数来载入一个视图文件:

$this->load->view(‘name’);

上面的 name 便是你的视图文件的名字。注意:.php 文件的扩展名(后缀名)没有必要专门写出,除非你使用了其他的扩展名。

现在, 打开你先前写的名为 blog.php 控制器文件,并且使用视图载入函数替换echo段代码:

如果你使用先前你用的 URL 浏览你的网站,你将会看到你的新视图. URL 与下面的类似:

example.com/index.php/blog/

载入多个视图

CodeIgniter 能智能的处理多个从控制器发起的视图载入函数调用 $this->load->view。如果有多个调用,那么他们将会被合并到一起。例如,你可能希望有一个标题视图、一个菜单视图、一个内容视图、和一个页脚视图。他们看起来应该是这样:

Read More →

什么是控制器?

简而言之,一个控制器就是一个类文件,是以一种能够和 URI 关联在一起的方式来命名的。

假设这个 URI:

example.com/index.php/blog/

在上面的例子中,CodeIgniter 将尝试寻找并装载一个名为 blog.php 的控制器。

当控制器的名字匹配 URI 的第一段时,它将被装载。

 

让我们试试看:  Hello World!

我们来创建一个简单的控制器,以便更直观地了解其工作原理。使用你的文本编辑器,创建一个名为 blog.php 的文件,然后输入下列代码:

然后保存文件到 application/controllers/ 文件夹。

现在使用类似这样的 URL 访问你的站点:

example.com/index.php/blog/

如果你做的没错,你应该看到Hello World!.

注意:类名必须以大写字母开头。换句话说,这是有效的:

<?php
class Blog extends CI_Controller {

}
?>

下面的blog首字母b小写,是属于无效的写法:

<?php
class blog extends CI_Controller {

}
?>

同时,始终确保你的控制器扩展自父控制器类,以便它能够继承其所有的方法。

Read More →

在一些应用中emoji表情非但没有用,而且处理起来很麻烦。比如说,在手机端iso和安卓就不兼容,当然PC端就更加无法识别。因此为了数据统一,我们经常会吧emoji表情处理掉,下面的函数就是处理此标签的

 

/**
 * 过滤四个字节的emoji
 * @param string $text 要过滤的文本
 * @return string
 */
function filterEmoji($text)
{
    // Match Emoticons
    $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
    $text = preg_replace($regexEmoticons, '', $text);
    
    // Match Miscellaneous Symbols and Pictographs
    $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
    $text = preg_replace($regexSymbols, '', $text);
    
    // Match Transport And Map Symbols
    $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
    $text = preg_replace($regexTransport, '', $text);
    
    // Match Miscellaneous Symbols
    $regexMisc = '/[\x{2600}-\x{26FF}]/u';
    $text = preg_replace($regexMisc, '', $text);
    
    // Match Dingbats
    $regexDingbats = '/[\x{2700}-\x{27BF}]/u';
    $text = preg_replace($regexDingbats, '', $text);
    
    $text = preg_replace_callback(
        '/./u',
        function (array $match) {
            return strlen($match[0]) >= 4 ? '' : $match[0];
        },
        $text);
    
    //去除空格
    if(!empty($text)){
        $text = str_replace(' ', '',$text);
    }

    return $text;
}

由于wp的支持不好,这里我就做一下截图

让MySQL支持Emoji表情 mysql 5.5.3+

让mysql支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集。 mysql 版本 5.6

1 解决方案:将Mysql的编码从utf8转换成utf8mb4。 需要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、 复制报错

2 my.cnf

文件添加

[mysqld]

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect=’SET NAMES utf8mb4′

3 修改需要添加库 表 字段的字符集

修改数据库字符集: ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

修改表的字符集: ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

修改字段的字符集: ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 如果只是某个字段需要 只需要修改那个字段的字符集就可以了

Read More →