201505-08 选择Yii 2.0版本框架的7个理由 本文作者MatthewBeaumont是一位PHP开发者,曾与LAMP有8年的合作关系,业余时间在卡耐基音乐厅,林肯中心,无线电城音乐厅等地的管弦乐团扮演专业的打击乐乐手。去年年底,SitePoint发表了一篇文章,着重强调了一些顶级的PHP框架,当时并列排名第四的是Yii(发音Yee)框架,最新版本为1.1.14。最近,Yii发布了2.0版本。然而对它进行报导的时候,它还处在RC状态,如今刚好完整新版本发布,我觉得是时候重新考虑一下选择... 继续阅读 >
201503-26 常用设计模式之迭代器模式及其PHP实现(Yii框架) 迭代器模式是一种行为型模式,它是一种最简单也最常见的设计模式。它可以让使用者透过特定的接口巡访容器中的每一个元素而不用了解底层的实际操作。适用性在希望利用语言本身的遍历函数便利自定义结构时,例如PHP中的foreach函数类图PHP实例<?phpclasssampleimplementsIterator{private$_items;publicfunction__construct(&$data){$this->_items=$data;}publicfunctioncurrent(){... 继续阅读 >
201501-27 Yii框架中使用CHtmlPurifier过滤文本内容防止XSS攻击 1、在控制器中使用:publicfunctionactionCreate(){$model=newNews;$purifier=newCHtmlPurifier();$purifier->options=array('URI.AllowedSchemes'=>array('http'=>true,'https'=>true,),'HTML.Allowed'=>'div',);if(isset($_POST['News'])){$model->attributes=$_POST['News'];$model->attributes['content']=$purifier... 继续阅读 >
201501-27 Yii中后台使用session防止重复提交及灌水 1、从前端的角度:增加遮罩2、从后端的角度:使用session$session=Yii::app()->session;$user_id=Yii::app()->user->id;$sessionKey=$user_id.'_is_sending';if(isset($session[$sessionKey])){$first_submit_time=$session[$sessionKey];$current_time=time();if($current_time-$first_submit_time<10){$session[$sessionKey]=$current_time;$this->response(array('status'=>1,'... 继续阅读 >
201501-27 Yii2.0教程入门篇 —— 安装配置 说明:Yii2.0需要PHP5.4+版本下载&安装:使用Composer安装composerglobalrequire"fxp/composer-asset-plugin:1.0.0-beta4"composercreate-project--prefer-distyiisoft/yii2-app-basicbasic下载文件安装下载地址:http://www.yiiframework.com/download/或者从github下载最新版本:https://github.com/yiisoft/yii2解压下载到的压缩文件,进入apps/basic/config/web.php,修改cookieValidationKey://!!!insert... 继续阅读 >
201501-27 Yii2.0教程入门篇 —— 运行应用 应用框架:basic/应用根路径composer.json被Composer调用,描述包信息config/包含应用及其它配置console.php控制台应用配置web.phpweb应用配置commands/包含控制台命令类controllers/包含控制器类models/包含模型类runtime/包含Yii在运行时生成的文件,比如日志和缓存文件vendor/... 继续阅读 >
201501-27 Yii2.0教程入门篇 —— 测试实例 本章节讨论如何在应用中创建“Hello”页面创建Action在controllers/SiteController.php中:<?phpnamespaceapp\controllers;useyii\web\Controller;classSiteControllerextendsController{//...existingcode...publicfunctionactionSay($message='Hello'){return$this->render('say',['message'=>$message]);}}创建视图在views/site/say.php中:<?phpuseyii\helpers\Html;?><?ph... 继续阅读 >
201501-27 Yii2.0教程入门篇 —— 使用表单 创建Model:models/EntryForm.php<?phpnamespaceapp\models;useyii\base\Model;classEntryFormextendsModel{public$name;public$email;publicfunctionrules(){return[[['name','email'],'required'],['email','email'],];}}创建Action:<?phpnamespaceapp\controllers;useYii;useyii\web\Controller;useapp\models\EntryForm;classSiteControl... 继续阅读 >
201501-27 Yii2.0教程入门篇 —— 使用数据库 准备好数据库:新建一个数据库yii2basic,然后在其中创建一张表:CREATETABLE`country`(`code`CHAR(2)NOTNULLPRIMARYKEY,`name`CHAR(52)NOTNULL,`population`INT(11)NOTNULLDEFAULT'0')ENGINE=InnoDBDEFAULTCHARSET=utf8;INSERTINTO`country`VALUES('AU','Australia',18886000);INSERTINTO`country`VALUES('BR','Brazil',170115000);INSERTINTO`country`VALUES('CA','Canada',114700... 继续阅读 >
201501-27 Yii2.0教程入门篇——使用Gii生成代码 开启Giiconfig/web.php:$config=[...];if(YII_ENV_DEV){$config['bootstrap'][]='gii';$config['modules']['gii']='yii\gii\Module';}在web/index.php中设置YII_ENV_DEV:defined('YII_ENV')ordefine('YII_ENV','dev');如果是从非localhost访问需要在配置文件中作如下设置:'gii'=>['class'=>'yii\gii\Module','allowedIPs'=>['127.0.0.1','::1','192.168.0.*','192.168.178.20']//... 继续阅读 >
201501-27 Yii2.0教程应用结构篇 —— 结构概述 Yii应用参照模型-视图-控制器(MVC)设计模式来组织。模型代表数据、业务逻辑和规则;视图展示模型的输出;控制器接受出入并将其转换为模型和视图命令。除了MVC,Yii应用还有以下部分:入口脚本:终端用户能直接访问的PHP脚本,负责启动一个请求处理周期。应用:能全局范围内访问的对象,管理协调组件来完成请求.应用组件:在应用中注册的对象,提供不同的功能来完成请求。模块:包含完整MVC结构的独立... 继续阅读 >
201501-27 Yii2.0教程应用结构篇 —— 入口脚本 入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。终端用户的请求通过入口脚本实例化应用并将将请求转发到应用。Web应用的入口脚本必须放在终端用户能够访问的目录下,通常命名为index.php,也可以使用Web服务器能定位到的其他名称。控制台应用的入口脚本一般在应用根目录下命名为yii(后缀为.php),该文件需要有执行权限,这样用户就能通过命令./yii<route>[arguments]... 继续阅读 >
201501-27 Yii2.0教程应用结构篇 —— 应用主体 应用主体是管理Yii应用系统整体结构和生命周期的对象。每个Yii应用系统只能包含一个应用主体,应用主体在入口脚本中创建并能通过表达式\Yii::$app全局范围内访问。补充:当我们说"一个应用",它可能是一个应用主体对象,也可能是一个应用系统,是根据上下文来决定[译:中文为避免歧义,Application翻译为应用主体]。Yii有两种应用主体:[[yii\web\Application|网页应用主体]]and[[yii\console\Application|控制台应用主... 继续阅读 >
201501-27 Yii2.0教程应用结构篇 —— 应用组件 应用主体是服务定位器,它部署一组提供各种不同功能的应用组件来处理请求。例如,urlManager组件负责处理网页请求路由到对应的控制器。db组件提供数据库相关服务等等。在同一个应用中,每个应用组件都有一个独一无二的ID用来区分其他应用组件,你可以通过如下表达式访问应用组件。\Yii::$app->componentID例如,可以使用\Yii::$app->db来获取到已注册到应用的[[yii\db\Connection|DBconnection]],使用\Yii::$app->c... 继续阅读 >
201501-27 Yii2.0教程应用结构篇 —— 控制器 控制器是MVC模式中的一部分,是继承[[yii\base\Controller]]类的对象,负责处理请求和生成响应。具体来说,控制器从应用主体接管控制后会分析请求数据并传送到模型,传送模型结果到视图,最后生成输出响应信息。动作控制器由动作组成,它是执行终端用户请求的最基础的单元,一个控制器可有一个或多个动作。如下示例显示包含两个动作viewandcreate的控制器post:namespaceapp\controllers;useYii;useapp\models\Post... 继续阅读 >
201501-27 Yii2.0教程应用结构篇 —— 视图 视图是MVC模式中的一部分。它是展示数据到终端用户的代码,在网页应用中,根据视图模板来创建视图,视图模板为PHP脚本文件,主要包含HTML代码和展示类PHP代码,通过[[yii\web\View|view]]应用组件来管理,该组件主要提供通用方法帮助视图构造和渲染,简单起见,我们称视图模板或视图模板文件为视图。创建视图如前所述,视图为包含HTML和PHP代码的PHP脚本,如下代码为一个登录表单的视图,可看到PHP代码用来生成动态内容如... 继续阅读 >