We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
php-src对于一些基础语法的改进速度迟缓,而修改语法需要2/3以上绝对多数投票同意,需准备存在较长时间的辩论。为了解决我们项目中急需的一些语法。
php-src
在swoole-cli v6 版本我们考虑自行对PHP语言和VM层面进行一些扩展,经过实际项目验证后,再向php-src提交RFC和PR。
swoole-cli v6
PHP
VM
RFC
PR
在其他编程语言中,数组和字符串均是作为一个对象存在的,例如Java、JS、Python,数组和字符串均有内置的方法进行各种操作。而PHP中需要使用一个函数来对数组和字符串进行操作。这存在几个问题:
Java
JS
Python
扩展语法将string和array作为一种内置的final class,可以直接使用对象方法来进行操作。
string
array
final class
$array = [1, 2, 3, 99]; $array->contains(99); $index = $array->indexOf(3); $string = $array->join(';');
$str = "hello world!"; $true = $str->startsWith('hello'); $true = $str->endsWith('!'); $array = $str->split(' ');
可强制限定数组的key和value类型,解决使用数组导致的类型黑洞问题。语法类似于C++的泛型写法,允许多层嵌套。
C++
array<int> $array = [1, 2, 3]; array<string> $array = ['hello', 'world']; array<TestObject> $array = [new TestObject]; array<array<stdClass>> $array;
array<int, string> $array = [1 => 'a', 2 => 'b', 3 => 'c']; array<string, TestObject> $array = [ 'first' => new TestObject]; array<string, array<stdClass>> $array;
可在运行前对.php文件进行编译,生成.phpc文件。运行时仅需要.phpc文件即可,部署和分发不再需要 .php源文件。
.php
.phpc
将检索整个目录,编译所有.php文件,在project_release/目录中生成.phpc文件。
project_release/
swoole-cc project/ -o project_release/
cd project_release/ # 运行 dev http server swoole-cli -S 127.0.0.1:9001 # 运行 swoole server 守护程序 swoole-cli bin/server.php
The text was updated successfully, but these errors were encountered:
No branches or pull requests
背景
php-src
对于一些基础语法的改进速度迟缓,而修改语法需要2/3以上绝对多数投票同意,需准备存在较长时间的辩论。为了解决我们项目中急需的一些语法。在
swoole-cli v6
版本我们考虑自行对PHP
语言和VM
层面进行一些扩展,经过实际项目验证后,再向php-src
提交RFC
和PR
。改进方向
1. 数组和字符串作为对象
在其他编程语言中,数组和字符串均是作为一个对象存在的,例如
Java
、JS
、Python
,数组和字符串均有内置的方法进行各种操作。而PHP
中需要使用一个函数来对数组和字符串进行操作。这存在几个问题:扩展语法将
string
和array
作为一种内置的final class
,可以直接使用对象方法来进行操作。数组方法
字符串对象
2. 强类型数组
可强制限定数组的key和value类型,解决使用数组导致的类型黑洞问题。语法类似于
C++
的泛型写法,允许多层嵌套。list 语法
map 语法
3. AOT 预编译器
可在运行前对
.php
文件进行编译,生成.phpc
文件。运行时仅需要.phpc
文件即可,部署和分发不再需要.php
源文件。编译
将检索整个目录,编译所有
.php
文件,在project_release/
目录中生成.phpc
文件。运行
The text was updated successfully, but these errors were encountered: