PHP5与PHP7
发表于|更新于|PHP
|总字数:248|阅读时长:1分钟|浏览量:
- 改进的性能 - 将 PHPNG 代码合并到 PHP7 中,速度是 PHP 5 的两倍。
- 降低内存消耗 - 优化的 PHP 7 使用较少的资源。
- 标量类型声明 - 现在可以强制执行参数和返回类型。
- 一致的 64 位支持 - 对 64 位体系结构机器的一致支持。
- 改进了异常层次 - 异常层次得到了改进
- 许多致命的错误转换为例外 - 例外范围增加,涵盖许多致命的错误转换为例外。
- 安全随机数发生器 - 增加新的安全随机数发生器 API。
- 已弃用的 SAPI 和扩展已删除 - 各种旧的和不受支持的 SAPI 和扩展从最新版本中删除。
- 空合并运算符(?) - 添加了新的空合并运算符。
- 返回和标量类型声明 - 支持所添加的返回类型和参数类型。
- 匿名类 - 支持匿名添加。
- 零成本断言 - 支持零成本断言增加。
文章作者: Michael
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Michael's Blog!
相关推荐

2023-03-05
instanceof 与 method_exists
instanceof與method_exists的用法區別。參考StackoverFlow instanceof為保留關鍵字,用於檢查對象是否屬於某個類。如果對象是類的實例,則比較返回true,否則返回 false。通常我們理解為 類型運算符兩邊為對象或類進行比較,等同於===;所以,與CommonService的判斷比較也是可取的。 method_exists為內置函數,用於檢查對象或類是否具有指定的方法。通常我們理解為 對象或類中是否存在指定方法,返回值也為 true 或 false。 結論:倆者的比較維度不同。 比较项 instanceof method_exists 性质 关键保留字 内置函数 用途 检查对象是否属于某一个类 检查对象或类是否具有指定的方法 返回 true 或 false true 或 false instanceof不会告诉你传递的对象是否包含该方法,只告诉你它是那个方法的一个实例。 dyld[43914]: Library not loaded: /opt/homebrew/opt...

2021-04-18
PHP 生命周期与 SAPI
一句话 PHP 生命周期 = MINIT → RINIT → 执行 → RSHUTDOWN → MSHUTDOWN。CLI/CGI 模式每个请求跑完整 5 步;FPM 模式只跑中间 3 步(M 阶段进程启动时跑一次);Swoole/Workerman 更进一步,只跑 1 步。 五大阶段 阶段 触发时机 典型工作 MINIT (Module Init) 进程启动 加载扩展、注册类/函数/常量 RINIT (Request Init) 每个请求开始 初始化 $_GET/$_POST/$_SESSION、扩展请求级状态 Execute RINIT 之后 把 PHP 源码编译成 opcode 并执行 RSHUTDOWN 请求结束 调注册的 shutdown 函数、清理临时变量 MSHUTDOWN 进程退出 卸载扩展、释放永久内存 CLI vs FPM vs SwooleCLI(每次都完整 5 步)1php script.php 启动:MINIT → RINIT → Execute → RSHUTDOWN...

2021-04-10
PHP 垃圾回收机制(GC)
一句话 PHP GC = 引用计数为主 + 循环引用收集器为辅。 引用计数归零立刻释放,解决不了的循环引用由后台收集器周期清理。 一、引用计数(refcount)PHP 的每个变量底层是 zval,里面有 refcount 和 is_ref 两个字段。 1234$a = 'hello'; // refcount = 1$b = $a; // refcount = 2 (写时复制,COW)unset($a); // refcount = 1unset($b); // refcount = 0 → 立即释放 用 xdebug_debug_zval() 或 debug_zval_refcount() 可以看到 refcount。 注意:PHP 7+ 的 zval 实现有重大改动(zval 嵌入栈、引用单独 zend_reference),但算法语义没变。 二、引用计数解决不了的:循环引用1234567891011class Node { public $next;}$a = new N...

2021-03-20
OOP - 面向对象
一句话 OOP = 把”数据”和”操作数据的方法”封装到一起,再用继承/多态在不改旧代码的前提下扩展新行为。 它的对立面是「面向过程」(数据是数据,函数是函数)和「函数式」(数据不可变,靠函数组合)。三种范式各有适用场景,OOP 不是唯一正解。 三大特性1. 封装(Encapsulation)把内部状态藏起来,只暴露必要接口。 123456789class BankAccount { private int $balance = 0; // 外面碰不到 public function deposit(int $amount): void { if ($amount <= 0) throw new InvalidArgumentException(); $this->balance += $amount; } public function balance(): int { return $this->balance; }} ...

2021-03-20
PHP版本区别
版本 特性 4 支持 autoload、PDO 和 MySQLi、类型约束,纯过程式语言,没太多复杂的 5.2 支持JSON,完全实现了面向对象 5.3 匿名函数,魔术方法,命名空间,后期静态变量绑定,hereDoc、nowDoc、const、三元运算、Phar 5.4 (无需修改ini配置)短标签,数组简写,Traits工具类,内置Web服务器 5.5 yield迭代器、生成器(foreach),foreach支持list() 5.6 增强常量、命名空间,可变函数参数,**幂运算,大文件上传,php://input可重用 7.0 新版ZendEngine引擎,匿名类,返回类型声明,变量类型、错误异常、zval使用栈内存等许多新特性 7.1 可空(NullLable)类型、list简写[]、指定key,const常量可指定权限,多异常捕获处理 7.2 新的对象类型,逆变和协变,通过名称加载扩展,允许重写抽象方法,使用argon2算法生成密码散列,新增ext/PDO字符串扩展类型 7.3 取数组第一个...

2019-03-20
Yii2
一、Yii2 简介Yii 取自「Yes It Is」—— 强调”快”。Yii2 在国内外都有稳定用户群,特点: Active Record + Query Builder 双模式 ORM,比 Laravel Eloquent 更灵活 Gii 代码生成器:图形化生成 Model / CRUD / 模块,5 分钟出一套后台 内置 RBAC:角色权限管理开箱即用 Asset Bundle:前端资源打包/版本管理(早于 webpack 时代的解决方案) 两套骨架:Basic(小项目)和 Advanced(前后台分离) 性能在传统 PHP 框架里属于第一梯队,仅次于 Yaf/Phalcon 这类 C 扩展。 二、安装123456# Basic 模板composer create-project --prefer-dist yiisoft/yii2-app-basic basic# Advanced 模板(前后台分离)composer create-project --prefer-dist yiisoft/yii2-app-advanced a...
评论
公告
欢迎来到 Michael 的博客 · 记录代码、思考与生活
