Table of Contents Objects 对象 Prefilters 预过滤器 Postfilters 后过滤器 Output Filters 输出过滤器 Cache Handler Function 缓冲处理函数 Resources 资源 Smarty allows access to PHP objects through the templates. There are two w
Yii 包含了一个建立在 PHP PDO 之上的数据访问层 (DAO)。DAO为不同的数据库提供了一套统一的API。 其中 ActiveRecord 提供了数据库与模型(MVC 中的 M,Model) 的交互,QueryBuilder 用于创建动态的查询语句。 DAO提供了简单高效的SQL查询,可以用在与数据库交互的各个地方. 使用 Yii DAO 时,你主要需要处理纯 SQL 语句和 PHP 数
使用过滤器 你可以使用过滤组件侦听来自应用的请求,转换请求和响应。过滤器能很好地实现你的应用中的横切关注点(Cross-cutting concern)。你可以通过扩展 Filter 特质来创建一个过滤器,然后将其加入 Global 对象。 以下示例创建了一个记录所有动作结果的访问记录过滤器: import play.api.Logger import play.api.mvc._ object
Global 对象 你可以在项目中定义一个 Global 对象来控制应用的全局设置。这个对象必须在默认(空)包中定义并扩展自 GlobalSettings。 import play.api._ object Global extends GlobalSettings { } 提示:你也可以在 application.global 设置字段中指定一个自定义 GlobalSettings 实现的类名。
Runloop 是和线程紧密相关的一个基础组件,是很多线程有关功能的幕后功臣。尽管在平常使用中几乎不太会直接用到,理解 Runloop 有利于我们更加深入地理解 iOS 的多线程模型。 Runloop 基本概念 Runloop 是什么?Runloop 还是比较顾名思义的一个东西,说白了就是一种循环,只不过它这种循环比较高级。一般的 while 循环会导致 CPU 进入忙等待状态,而 Runloop
推荐首先阅读 内存管理 Objective-C 中的内存分配 在 Objective-C 中,对象通常是使用 alloc 方法在堆上创建的。 [NSObject alloc] 方法会在对堆上分配一块内存,按照NSObject的内部结构填充这块儿内存区域。 一旦对象创建完成,就不可能再移动它了。因为很可能有很多指针都指向这个对象,这些指针并没有被追踪。因此没有办法在移动对象的位置之后更新全部的这些指
Objective-C Runtime Runtime 是什么? Runtime 是 Objective-C 区别于 C 语言这样的静态语言的一个非常重要的特性。对于 C 语言,函数的调用会在编译期就已经决定好,在编译完成后直接顺序执行。但是 OC 是一门动态语言,函数调用变成了消息发送,在编译期不能知道要调用哪个函数。所以 Runtime 无非就是去解决如何在运行时期找到调用方法这样的问题。 对
Block 基础 Block 语法 Block 可以认为是一种匿名函数,使用如下语法声明一个 Block 类型: return_type (^block_name)(parameters) 例如: double (^multiplyTwoValues)(double, double); Block 字面值的写法如下: ^ (double firstValue, double secondValue
类方法 OC中类的方法只有实例方法和静态方法两种: @interface Controller : NSObject + (void)thisIsAStaticMethod; // 静态方法 – (void)thisIsAnInstanceMethod; // 实例方法 @end OC 中的方法只要声明在 @interface里,就可以认为都是公有的。实际上,OC 没有像 Java,C++ 中的那
typora-copy-images-to: img Object类 在JDK中提供了一个Object类,它是类层次结构的根类,每个类都直接或间接继承自该类,所有对象(包括数组) Object:所有类的根类。Object是不断抽取而来,具备着所有对象都具备的共性内容。 getClass().getName()代表返回对象所属类的类名,即Animal。 hashCode()代表返回该对象的哈希值。
Observable 对象 如果把一个普通的 JavaScript 对象传递给 observable 方法,对象的所有属性都将被拷贝至一个克隆对象并将克隆对象转变成可观察的。 (普通对象是指不是使用构造函数创建出来的对象,而是以 Object 作为其原型,或者根本没有原型。) 默认情况下,observable 是递归应用的,所以如果对象的某个值是一个对象或数组,那么该值也将通过 observabl
描述 把对象转换为查询字符串 var querystring = m.buildQueryString({a: "1", b: "2"}) // "a=1&b=2" 签名 querystring = m.buildQueryString(object) 参数 类型 是否必须 描述 object Object 是 一个键值对形式的对象 返回 String 一个查询字符串 工作原理 m.buildQu
不可变对象(Immutable Objects) 如果一个对象它被构造后其,状态不能改变,则这个对象被认为是不可变的(immutable )。不可变对象的好处是可以创建简单的、可靠的代码。 不可变对象在并发应用种特别有用。因为他们不能改变状态,它们不能被线程干扰所中断或者被其他线程观察到内部不一致的状态。 程序员往往不愿使用不可变对象,因为他们担心创建一个新的对象要比更新对象的成本要高。实际上这种
Classes vs. Objects 我们已经看到了各种理论的探索和“类”与“行为委托”的思维模型的比较。现在让我们来看看更具体的代码场景,来展示你如何实际应用这些想法。 我们将首先讲解一种在前端网页开发中的典型场景:建造 UI 部件(按钮,下拉列表等等)。 Widget “类” 因为你可能还是如此地习惯于 OO 设计模式,你很可能会立即这样考虑这个问题:一个父类(也许称为 Widget)拥有所
使用 Creator 打包的 iOS / Mac 原生应用中,我们也提供了在 iOS 和 Mac 上 JavaScript 通过原生语言的反射机制直接调用 Objective-C 函数的方法,示例代码如下: var result = jsb.reflection.callStaticMethod(className, methodName, arg1, arg2, .....); 在 jsb.r