原文链接:http://www.orlion.ga/253/ PHP是弱类型语言,向方法传递参数时也并不严格检查数据类型.不过有时候需要判断传递到方法中的参数,为此PHP中提供了一些函数来判断数据的类型,比如is_numeric()判断是否是一个数值或者可转换为数值的字符串,比如用于判断对象的类型运算符:instance of.instance of用来测定一个给定的对象是否来自指定的对象类.instance of运算符是PHP5引进的,在此之前是使用is_a(). 为了避免对象类型不规范引起的…
原文链接:http://www.orlion.ga/251/ 通常静态变量是静态分配的,他们的生命周期和程序的生命周期一样长,只有在程序退出后才结束生命周期,这和局部变量相反,有的语言中全局变量也是静态分配的,例如PHP和js中的全局变量. 静态变量可以分为: 静态全局变量,PHP中的全局变脸也可以理解为静态全局变量,因为除了明确unset释放,在程序运行过程中始终存在. 静态局部变量,也就是在函数内部定义的静态变量,函数在执行时对变量的操作会保持到下一次函数被调用 静态成员变量,这是在类中定义…
原文链接:http://www.orlion.ga/238/ 编程语言的类型可以分为强类型和弱类型两种,PHP是弱类型语言,但是C语言是强类型语言.在官网PHP实现内部,所有变量使用同一种数据结构(zval)来保存,这个结构表示PHP中的各种数据类型,它不仅包含变量的值,也包含变量的类型.这就是PHP弱类型的核心. 那zval结构是如何实现弱类型的呢? 一.PHP变量类型及存储结构   PHP在声明和使用变量的时候,并不需要指明其数据类型,PHP是弱类型语言,但是PHP有类型,PHP有八中数据类…
1.现实生活中我们会找一个小箱子来存放物品,一来显得不那么凌乱,二来方便以后找到.计算机也是这个道理,我们需要先在内存中找一块区域,规定用它来存放数据,并起一个好记的名字,方便以后查找.这块区域就是“小箱子”,我们可以把数据放进去了. 2.数据类型用来说明数据的类型,确定了数据的解释方式,同时指明了数据的长度,也就是数据占用的字节数 3.变量名就是给那块内存区域起了个名字,方便使用 4..从类型划分 1)静态类型语言:比如c/java,类型检查在编译器确定 2)动态类型语言: 比如PHP/pyt…
原文链接:http://www.orlion.ga/249/ PHP脚本在执行的时候用户全局变量(在用户空间显示定义的变量)会保存在一个HashTable数据类型的符号表中(symbol_table)中,在PHP中有一些比较特殊的全局变量例如:$_GET.$_POST.$_SERVER等变量,我们并没有在程序中定义这些变量,并且这些变量也同样保存在符号表中,PHP是在脚本运行之前就将这些特殊的变量加入到了符号表中了. 一.预定义变量$GLOBALS的初始化 我们以cgi模式为例说明$GLOBAL…
原文链接:http://www.orlion.ga/246/ 在PHP中,常量的名字是一个简单值的标识符,在脚本执行期间该值不能改变.和变量一样,常量默认为大小写敏感,但是通常是大写的. 常量是在变量的zval结构的基础上添加了一额外的元素.如下所示为PHP中常量的内部结构. 一.常量的内部结构 typedef struct _zend_constant {     zval value; /* zval结构,PHP内部变量的存储结构,在第一小节有说明 */     int flags;  /*…
原文链接:http://www.orlion.ga/344/ 一.函数的定义 用户函数的定义从function 关键字开始,如下 function foo($var) {    echo $var; } 1.词法分析 在Zend/zend_language_scanner.l中我们找到如下所示的代码: <ST_IN_SCRIPTING>"function" {    return T_FUNCTION; } 它所表示的含义是function将会生成T_FUNCTION标记.…
原文链接:http://www.orlion.ga/1237/ 类的成员变量在PHP中本质是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的. 类的成员方法在PHP中本质是一个函数,只是这个函数以类的方法存在,他可能是一个类方法也可能是一个实例方法,并且在这些方法都加上了类的访问控制.类的成员方法是现实世界实体行为的抽象,可以用来实现类的行为. 一.成员变量 成员变量在编译时已经注册到了类的结构中.在编译时类的声明编译会调用zend_do_begin_class_declara…
个人理解:定义接口变量为接收类型属于面向接口的编程,通过接口的抽象能减少类之间的耦合,增加可复用性. 面向接口编程: 一种规范约束 制定者(或者叫协调者),实现者(或者叫生产者),调用者(或者叫消费者). 接口本质上就是由制定者来协调实现者和调用者之间的关系. 只有实现者和调用者都遵循“面向接口编程”这个准则,制定者的协调目的才能达到. 接口的语义是can-do语义,表约束(Constraint). 像JDBC的规范API,不管你使用哪一套实现,我们使用的时候都是使用相同的API. 分离设计与实…
编程语言可以分为三大类 1. 静态类型语言,比如:C/Java等,在静态语言类型中,类型的检查是在编译期(compile-time)确定的. 2. 动态语言类型,比如:PHP,python等各种脚本语言,这类语言中的类型是在运行时确定的. 3. 无类型语言,比如:汇编语言,汇编语言操作的是底层存储,他们对类型毫无感知. 一.变量的结构和类型 1)变量的存储结构 在官方的PHP实现内部,所有变量使用同一种数据结构(zval)来保存. 它不仅仅包含变量的值,也包含变量的类型. 在PHP中,存在8种变…