YII编码规范
类名称:
驼峰式 首字母大字
class PointController
class PointRatioController
公共成员方法:
驼峰式 首字母小写
public function getPointById()
私有成员方法:
驼峰式 首字母小写
private function _getPointById()
公共成员变量:
public $users
public $userName
私有成员变量:
private $_user
private $_userName
常量:
所有字母大写,单词间用下划线分隔
const POS_HEAD = 0;
代码编写规范
1. 多使用配置文件,避免硬编码
2. 多采用设计模式(工厂模式,单例模式等)
3. 使用注释
a) 对类名进行注释
b) 方法名进行注释(包括每个方法的参数与返回值)
c) 对常量进行注释
d) 对成员属性进行注释(public $userName; // 用户名)
e) 配置文件进行注释
Yii框架MVC模式:
model:
与数据持久层的交互
必要方法:
model(); // 静态方法 返回模型的实例
tableName(); // 返回数据库表名
rules(); // 表单的各种验证规则(用户名,email)
relations(); // 表关系配置(n:1 or 1:1 or n:n)
attributeLabels(); // 表字段国际化处理
search(); // 默认搜索方法
… 其他增删改查验证方法
controller:
主要处理用户的请求与响应
必要方法:
filters(); // 方法过滤
accessRules(); // 动作访问控制
actions(); // 动作action配置
… 其他处理请求与响应的方法
view:
采用Yii自带的组件模块
service:
对于业务逻辑比较复杂的系统,在增加业务逻辑层(service);程序员自由发挥的地方;
主要处理比较复杂的业务逻辑
命名规范:UsersService
执行流程:[注:service层用于逻辑比较复杂的时候]
views->controller->service->model à用户请求
model->service->controller->views à系统响应
数据库访问
1. 数据访问对象(DAO)
复杂sql语句查询时使用
$user = Yii::app()->db->createCommand()
->select('id, username, profile')
->from('tbl_user u')
->join('tbl_profile p', 'u.id=p.user_id')
->where('id=:id', array(':id'=>$id))
->queryRow();
2. ActiveRecord
简单sql语句查询及添加修改删除时使用
Admin::model()->find(‘id=:id’, array(‘:id’=>id));
注:查询条件使用占位符的方式
需求整理
???
Yii常用方法
CHtml
Static Methods
For CActiveRecords:
activeCheckbox($m, $a);
activeCheckboxList($m, $a, $data);
activeDropDownList($m, $a, $data);
activeFileField($m, $a);
activeHiddenField($m, $a);
activeId($m, $a);
activeLabel($m, $a);
activeLabelEx($m, $a);
activeListBox($m, $a, $data);
activePasswordField($m, $a);
activeRadioButton($m, $a);
activeRadioButtonList($m, $a, $data);
activeTextArea($m, $a);
activeTextField($m, $a);
CFormModel
Properties
attributes, errors, safeAttributeNames, scenario, validators
Public Methods Events
addError($a, $error);
afterValidate($scenario);
attributeLabels();
beforeValidate($scenario);
hasErrors($a);
rules();
validate($s='', $a=NULL);
onAfterValidate($e);
onBeforeValidate($e);
CDbConnection
Properties
active, autoCommit, autoConnect, charset, commandBuilder,
connectionStatus, connectionString, currentTransaction, lastInsertId,
password, schema, schemaCachingDuration, timeout, username
For CForm
checkbox($n, $v);
checkboxList($n, $v, $data);
dropDownList($n, $c, $data);
fileField($n, $v);
hiddenField($n, $v);
label($n, $v);
listBox($n, $v, $data);
passwordField($n, $v);
radioButton($n, $c);
radioButtonList($n, $m, $data);
textArea($n, $v);
textField($n, $v);
Yii (extends YiiBase)
Static Methods
app() /*gets the application instance */
t($category, $message, $params=array ( ),$source=NULL, $language=NULL);
import(string $alias, boolean $forceInclude=false);
log($msg, $level='info', $category='application');
CController (extends CBaseController)
Properties
action, defaultAction, id, layout, module, pageTitle
Methods
actions(); /*list of external actions*/
beginClip($id, $properties=array ( ));
endClip($idclip=’’);
beginWidget($className, $properties=array ( ));
endWidget(string $id='');
missingAction(string $actionID);
redirect($url, $terminate=true, $statusCode=302);
refresh($terminate=true,$anchor='');
render($view, $data=NULL, $return=false);
renderPartial($v, $d=NULL,$r=false, $processOutput=false);
widget( $className, $properties=array ( ));
CWebApplication (extends CApplication)
Core application components
errorHandler, securityManager, statePersister,
cache, messages, coreMessages
Properties
cache, charset, components, db, language, locale,
name, modules, securityManager, sourceLanguage
Methods
getNumberFormatter(); getDateFormatter();
CWidget (extends CBaseController)
Properties
controller, id, owner, viewPath
Methods
init(); run(); render($view, $data=NULL, $return=false);
Public Methods
beginTransaction();
createCommand($sql);
open();
close();
init();
quoteColumnName($name);
quoteTableName($name);
quoteValue($name);
CHttpRequest
Properties
baseUrl, browser, cookies, hostInfo, isAjaxRequest,
isPostRequest, isSecureConnection, pathInfo,
preferredLanguage, queryString, requestUri,
serverName, serverPort, url, urlReferrer, userAgent,
userHost, userHostAddress
Methods
sendFile($fn, $c, $mime=NULL, $t=true);
CActiveRecord
Properties
attributes, errors, isNewRecord, primaryKey, scenario
Static Methods
model($className='CActiveRecord');
Public Methods Events
count($c=’’, $p=array ( ));
delete();
deleteAll($c='', $p=array ( ));
find($c='', $p=array ( ));
findAll($c='', $p=array ( ));
findBySql($sql, $p=array ( ));
hasErrors($a);
update($a=NULL);
updateAll($a, $c='', $p=array ( ));
updateByPk($pk, $a, $c='', $p=array ( ));
validate();
onAfterDelete($e);
onAfterInsert($e);
onAfterSave($e);
onAfterValidate($e);
onBeforeDelete($e);
onBeforeSave($e);
onBeforeValidate($e);
CDbCommand
Properties
connection, text
Public Methods
bindParam($n, $v, $dt=NULL, $length=NULL);
bindValue($n, $v, $dataType=NULL);
execute();
query();
queryAll($fetchAssociative=true);
queryColumn();
queryRow($fetchAssociative=true);
queryScalar();
YII编码规范的更多相关文章
- PSR : php编码规范
诸王混战 关于开发标准这块,可以说一直都是风格迥异,各家都有各家的玩法,民间更是个人玩个人的.目前我们国内比较出名的几个框架(Yii,Laravel) 都已经支持Composer并且加入了PHP-FI ...
- Android的编码规范
一.Android编码规范 1.学会使用string.xml文件 在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml 比如一个保存按钮 , 不规范写法: <Butt ...
- PHP 高级编程(1/5) - 编码规范及文档编写
PHP 高级程序设计学习笔记20140612 软件开发中的一个重要环节就是文档编写.他可以帮助未来的程序维护人员和使用者理解你在开发时的思路.也便于日后重新查看代码时不至于无从下手.文档还有一个重要的 ...
- 【原】JAVA SE编码规范
/* * 编码规范: * 1.所有的命名遵循"见名知意"的原则 * 2.所有的命名不允许使用汉字或拼音 * 3.Java的工程命名建议使用小写,比如:oa.crm.cms... * ...
- 浅谈Android编码规范及命名规范
前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...
- PHP编码规范PSR-2
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- Objective-C开发编码规范【转载】
概要 Objective-C是一门面向对象的动态编程语言,主要用于编写iOS和Mac应用程序.关于Objective-C的编码规范,苹果和谷歌都已经有很好的总结: Apple Coding Guide ...
- 前端编码规范之CSS
"字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ...
- 前端编码规范之JavaScript
上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...
随机推荐
- git - 简明指南(转)
安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库. 检出仓库 执行 ...
- Swift: 打造滑动解锁文字动画
原文:Swift: 打造滑动解锁文字动画 最近木事,找出来玩了玩facebook的paper.到处都是那个"slide to unlock your phone"的效果啊.忽闪忽闪 ...
- Asp.Netserver控制发展Grid实现(一个)UI转让
使用Asp.Net办Web开发时间,控制系统提供了,目的,有时很难达到理想的.然后,有几种方法来解决,例如,使用html+js形式,在所需界面的布局的前端,然后通过ajax和其他方式获得的数据.为了实 ...
- EasyUI 扩展自己定义EasyUI校验规则 验证规则(经常使用的)
比如 校验输入框仅仅能录入0-1000之间 最多有2位小数的数字 表单<input type="text" id="rate" name="ra ...
- 背包问题 (DP)
利用记忆化数组.记dp[i][j]为根据rec的定义,从第i个物品开始挑选总重小于j时,总价值的最大值. 递推式: dp[i][j]=0 (j<w[i]) dp[i][j] dp[i][ ...
- JAVA设计模式(09):结构化-代理模式(Proxy)
一,定义: 代理模式(Proxy):为其它对象提供一种代理以控制对这个对象的訪问. 二.其类图: 三,分类一:静态代理 1,介绍:也就是须要我们为目标对象编写一个代理对象,在编译期就生成了这个代理对 ...
- 基于Js实现的UrlEncode和UrlDecode函数代码
<script language="javascript">//UrlEncode函数function UrlEncode(str){ var ret="& ...
- Java EE (1) -- Java EE 6 Web Component Developer Certified Expert(1z0-899)
1: hash map, hash tables 的区别 The HashMap class is roughly equivalent to Hashtable, except that it is ...
- jQuery遍历table中间tr td并获得td价值
jQuery遍历table中间tr td并获得td中间值 $(function(){ $("#tableId tr").find("td").each(func ...
- oracle_有关表分区_查询
<!--查询ORACLE分区表存在多少个分区--> SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='TBL_PAGE'; < ...