图源:php.net 匿名类 匿名类(anonymouse classes)可以用于创建一次性对象,这在大量使用设计模式的框架代码中很常见,比如Java的图形框架。这里用一个精简的图形框架代码进行说明: <?php /** * 鼠标监听事件接口 */ interface OnclickListener { /** * 鼠标点击事件 * @param $mouse 鼠标 * @param $view 图形UI控件 */ public function onclic…
图源: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.net if php中常用的if语法与C++或Java中的没有区别: <?php $a = 1; if ($a < 5) { echo "a < 5" . PHP_EOL; } else if ($a == 5) { echo "a == 5" . PHP_EOL; } else { echo "a > 5" . PHP_EOL; } // a < 5 其中else if也可以写作elseif,两者几乎没有区别。 php还有一种不常见的替代语法: <…
图源:php.net 表达式 php官方手册对表达式的定义是“任何有值的东西”。不同的语言对于表达式的定义是区别很大的,比如Python中很著名的“lamda表达式”,很多人觉得其本质就是个匿名函数,用处不大,这是因为他们不明白匿名函数无法嵌入表达式中使用,而lamda表达式可以。 基础数据 基础类型的数据本身就是一个表达式: echo 'hello'.PHP_EOL; echo (1).PHP_EOL; // hello // 1 需要注意的是,echo 1.PHP_EOL;会产生语法错误,因为整形值1是不能和字…
图源:php.net 语法 php常量的基本用途与其它语言类似,即在编译期而非运行期提供一种确定的、不会改变的值: const PROGRAM_VERSION = '1.0.0'; const DB_VERSION = '1.0.0'; const AUTHOR = 'icexmoon'; 这些常量通常用于定义软件版本号、作者信息等。 按习惯,常量名通常以全大写字母结合_定义。 在Go语言是个例外,其变量和常量命名都不推荐使用_,所以常量命名只能是大小写字母的驼峰样式。 常量与超全局变量类似,一经定义,可以在任何地…
图源:php.net 全局变量 php通常会被称作脚本语言,其它的脚本语言还有JavaScript或Python等,脚本语言都有一种特性:无需一个入口函数,逻辑代码和变量声明可以直接在源码文件中编写。 在php中,直接在源码文件中而不是函数或者类中定义的变量称作“全局变量”,该变量可以在函数或类外部使用,但无法直接在函数或类内部使用: <?php $number = 0; function use_global(){ echo $number.PHP_EOL; // Warning: Unde…
图源:php.net Iterable 可迭代对象 Iterable是php的一个伪类型,包含数组或者实现了Traversable接口的对象。Iterable类型可以被foreach迭代,也可以和生成器相关的yield from语句一起使用。 Iterable可以用于参数类型约束,且进一步通过foreach语句迭代: function do_something(iterable $iter){ foreach($iter as $item){ ... } } 可以使用null或空数组作为i…
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED. 本网站由提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang