摘要:
PHP只有手动抛出异常后才能捕获异常 对于除零这种“异常”情况,PHP认为这是一个错误,直接触发错误(warning也是错误,只是错误等级不一样),而不会自动抛出异常使程序进入异常流程,故最终a值并不是预想中的 1,也就是说,并没有进入异常分支,也没有处理异常。 在下面三种场景下会用到异常处理机制: 阅读全文
摘要:
反射: 反射指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能称为反射API 反射API的功能显然更强大,甚至能还原这个类的原型,包括方法的访问权限,代码如下 反射可以探知类的内部结构,可以用它做hook实 阅读全文
摘要:
接口: 接口这样描述自己:对于实现我的所有类,看起来都应该像我现在这个样子 接口含义:采用一个特定接口的所有代码都知道对于那个接口会调用什么方法。 接口本身并不提供实现,只是提供一个规范。如果我们知道一个类实现了某个接口,那么就知道了可以调用该接口的哪些方法,我们只需要知道这些就够了。 PHP中,接 阅读全文
摘要:
继承: 在继承中,用parent指代父类,用self指代自身。使用“::”运算符(范围解析操作符)调用父类的方法。“::”操作符还用来作为类常量和静态方法的调用,不要把这两种应用混淆。 如果声明类成员或方法为static,就可以不实例化类而直接访问,同时也就不能通过一个对象访问其中的静态成员(静态方 阅读全文
摘要:
魔术方法: 魔术方法是以两个下画线开头、具有特殊作用的一些方法,可以看做PHP的“语法糖”。 set和get方法: 而PHP则在一个类中只允许有一个构造函数 PHP提供的“重载”指动态地“创建”类属性和方法。因此,set和get方法被归到重载里。 call和callStatic方法: 当调用一个不可 阅读全文
摘要:
类与对象: 类的定义与实例化。 类定义了一系列的属性和方法,并提供了实际的操作细节,这些方法可以用来对属性进行加工。 对象含有类属性的具体值,这就是类的实例化。正是由于属性的不同,才能区分不同的对象。在上面例子里,由于student和teacher的性别和姓名不一样,才得以区分开二人。 对象由属性和 阅读全文
摘要:
各种专业文献上的"闭包"(closure)定义非常抽象,很难看懂。我的理解是,闭包就是能够读取其他函数内部变量的函数。 由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。 所以,在本质上,闭包就是将函数内部和函数外部连接起来 阅读全文