PHP - 其他相关知识 - 生成器

程序员日记      2019-08-26
定义生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现Iterator接口的方式,性能开销和复杂性大大降低。生成器允许你在foreach代码块中写代码来迭代一组数据而不需要在内存中创建一个数组,那会使你的内存达到上限,或者会占据可观的处理时间。相反,你可以写一个生成器函数,就像一个普通的自定义函数一样,和普通函数只返回一次不同的是,生成器可以根据需要yield多次,以便生成需要迭代的值。关键字yield生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return...
标签:
40 人看过

PHP - 错误与异常 - 自定义异常类

程序员日记      2019-08-26
我们可以用自定义的异常处理类来扩展PHP内置的异常处理类。以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的。注意,以下代码仅为说明PHP内置的异常类的结构,并不是一段有实际意义的代码。内置的异常处理类结构<?phpclassException{  protected$message='Unknownexception';  //异常信息  private  $string;&nbs...
标签:
40 人看过

PHP - 错误与异常 - 异常的基本使用

程序员日记      2019-08-26
定义异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。当异常被触发时,通常会发生:1.当前代码状态被保存2.代码执行被切换到预定义的异常处理器函数3.根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本异常的规则1.需要进行异常处理的代码应该放入try代码块内,以便捕获潜在的异常。2.每个try或throw代码块必须至少拥有一个对应的catch代码块。3.使用多个catch代码块可以捕获不同种类的异常。4.可以在tr...
标签:
34 人看过

PHP - 错误与异常 - 错误级别说明及常见设置

程序员日记      2019-08-26
PHP的错误的报警级别。1    E_ERROR    报告运行时的致命错误2    E_WARNING    报告运行的非致命错误4    E_PARSE    报告解析错误8    E_NOTICE &nb...
标签:
29 人看过

PHP - 命名空间 - 使用命名空间

程序员日记      2019-08-26
在讨论如何使用命名空间之前,必须了解PHP是如何知道要使用哪一个命名空间中的元素的。可以将PHP命名空间与文件系统作一个简单的类比。在文件系统中访问一个文件有三种方式:1.相对文件名形式如foo.txt。它会被解析为currentdirectory/foo.txt,其中currentdirectory表示当前目录。因此如果当前目录是/home/foo,则该文件名被解析为/home/foo/foo.txt。2.相对路径名形式如subdirectory/foo.txt。它会被解析为currentdi...
标签:
32 人看过

PHP - 命名空间 - 定义命名空间

程序员日记      2019-08-26
定义命名空间命名空间通过关键字namespace来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间,除了一个以外:declare关键字。在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的declare语句。所有非PHP代码包括空白符都不能出现在命名空间的声明之前。与PHP其它的语言特征不同,同一个命名空间可以定义在多个文件中,即允许将同一个命名空间的内容分割存放在不同的文件中。示例<?phpnamespaceMyProject;constCONNECT_OK=...
标签:
42 人看过

PHP - 命名空间 - 概述

程序员日记      2019-08-26
定义什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件foo.txt可以同时在目录/home/greg和/home/other中存在,但在同一个目录中不能存在两个foo.txt文件。另外,在目录/home/greg外访问foo.txt文件时,我们必须将目录名以及目录分隔符放在文件名之前得到/home/greg/foo.txt。这个原理应用到程序设...
标签:
28 人看过

PHP - 类与对象 - 对象的遍历,克隆(复制),引用,序列化

程序员日记      2019-08-23
遍历对象遍历类对象,所有可见的元素都能被遍历示例<?phpclassdemo{  public$a=1;  private$b=2;  protected$c=3;  publicfunction__construct()  {  }  publicfunctionfoo()  {    ec...
标签:
43 人看过

PHP - 类与对象 - 魔术方法

程序员日记      2019-08-23
常见的魔术方法有__construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__wakeup(),__toString(),__invoke(),__set_state(),__clone()和__debugInfo()注意PHP将所有以__(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以__为前缀。1.__constru...
标签:
62 人看过

PHP - 类与对象 - 匿名类

程序员日记      2019-08-23
PHP7开始支持匿名类。匿名类很有用,可以创建一次性的简单对象。1.可以传递参数到匿名类的构造器,也可以扩展(extend)其他类、实现接口(implementinterface),以及像其他普通的类一样使用trait2.匿名类被嵌套进普通Class后,不能访问这个外部类(Outerclass)的private(私有)、protected(受保护)方法或者属性。 为了访问外部类(Outerclass)protected属性或方法,匿名类可以extend(扩展)此外部类。 为了...
标签:
41 人看过