图源:php.net 迭代器相关概念广泛存在于各种编程语言和设计模式中,这里推荐两篇我的相关文章: Python学习笔记31:迭代技术 设计模式 with Python 9:迭代器模式 迭代器 php中,可以通过实现Iterator接口的方式实现一个迭代器: <?php class MyClass implements Iterator { public function current(): mixed { } public function next(): void { } …
图源:php.net 迭代器相关概念广泛存在于各种编程语言和设计模式中,这里推荐两篇我的相关文章: Python学习笔记31:迭代技术 设计模式 with Python 9:迭代器模式 迭代器 php中,可以通过实现Iterator接口的方式实现一个迭代器: <?php class MyClass implements Iterator { public function current(): mixed { } public function next(): void { } …
图源:php.net 在之前的笔记PHP学习笔记6:表达式和运算符中介绍位运算时,提过error_reporting函数。事实上在使用php开发项目时,常需要使用相关的错误处理函数来设置环境,以让不同的环境对错误能进行不同的处理。 一般来说,基本原则是在开发环境严格检查错误,并将错误直接输出,这样有利于快速排查错误。而生产和预生产环境需要将错误输出从标准输出屏蔽,因为输出的错误信息可能包含一些敏感信息,这些信息被用户获知可能会影响到系统安全。此外一些不影响系统正常运行的错误信息,比如E_NOTICE和E_DEPCA…
图源:php.net 从php 8.0.0开始,php支持枚举类型。简单地说,枚举代表一类有限的数据集,这在计算机领域非常常见,比如说用户类型(管理员,普通用户,VIP等),再比如订单类型(团队订单,个人订单等)。 在以前php不支持枚举的时候,我通常会使用类常量: <?php class UserType { const ADMINI = 0; //管理员 const NORMAL = 1; //普通用户 const VIP = 2; //vip } function create_use…
图源:php.net 在php没有引入命名空间之前,构建比较大的应用时可能会遇到命名冲突的问题,比如: <?php // a.php class MyClass{ } <?php // b.php require_once './a/a.php'; class MyClass{ // PHP Fatal error: Cannot declare class MyClass, because the name is already in use in ... } 如果是多人协同开发的大…
图源:php.net Final关键字 final关键字作用于类,可以让类不能被继承。作用于方法和常量,可以让方法和常量不能被重写。属性不能被声明为final。 final的常见用途是在模版方法模式中,将基类的骨架方法声明为final: abstract class Control { protected bool $need_login = true; protected array $header = []; final public function handle_request() {…
图源:php.net 匿名类 匿名类(anonymouse classes)可以用于创建一次性对象,这在大量使用设计模式的框架代码中很常见,比如Java的图形框架。这里用一个精简的图形框架代码进行说明: <?php /** * 鼠标监听事件接口 */ interface OnclickListener { /** * 鼠标点击事件 * @param $mouse 鼠标 * @param $view 图形UI控件 */ public function onclic…
图源:php.net 继承 php可以使用extends关键字让一个类继承另一个类。继承是OOP三大特性之一,目的是可以在良好封装的基础上更好地实现代码复用。 php中,子类不能将继承自父类的可读可写属性声明为readonly: <?php class Base{ protected string $readWrite; } class Child extends Base{ readonly protected string $readWrite; // Fatal error: Cann…
图源:php.net 自动加载 在现实项目中,我们往往会将类定义单独放在一个php文件中,比如有一个类MyClass,对应的php文件名可能是my_class.cls.php,使用的时候要先使用require或include加载对应的文件。 除了手动加载文件以外,php还提供一种自动加载类文件的机制: <?php require_once "../../util/class.php"; spl_autoload_register(function ($clsName){ $fileName = "./"…
图源:php.net 基本概念 定义 php的类定义语法与其它语言几乎没有区别: <?php class Student { protected string $name = ""; protected int $age = 0; public function print(): void { echo "Student(name:{$this->name}, age:{$this->age})" . PHP_EOL; } } 像上面示例中的那样,在类定义中…
图源:php.net 定义 php的函数可以定义在任何地方,甚至是条件语句中: function create_func(int $num){ if ($num<10){ function test(){ echo "test function is called".PHP_EOL; echo "the \$num < 10"; } } else{ function test(){ …
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由
提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang