php7,8 支持变量类型约束了,开源框架也都在慢慢引入类型约束,感觉之前 php 的优势就是简单,快速开发,引入变量约束,四不像的感觉
1
coolesting 2020-12-25 23:09:16 +08:00 via Android
后期肯定要变得肿涨,转 nodejs 吧。
特别是那框架,一个个都模仿 ROR,更加怪异。 |
2
sagaxu 2020-12-25 23:28:45 +08:00 via Android
动态一时爽
|
3
learningman 2020-12-25 23:32:58 +08:00
@sagaxu GC 火葬场
|
4
ferock 2020-12-25 23:35:27 +08:00 via iPhone
再不转型,就毫无优势了
|
5
cmdOptionKana 2020-12-25 23:39:55 +08:00 5
js 是命好,才有微软这个级别的公司给它搞一个 typescript, 而 PHP 现在不受宠了,只能自己引入类型约束。
事实上在现代化 IDE 的加持之下,类型约束并不会影响快速开发,又方便了重构,利大于敝。 |
6
Mac 2020-12-25 23:41:53 +08:00 3
引入有什么不好么?你照样可以用之前的特性继续做快速开发呀。
|
7
aofall 2020-12-26 00:16:39 +08:00
就目前来说还不是强制要求的,虽然说弱类型可以快速开发之前是它的优势
但一门语言是要考虑自己未来的发展的,相比其他语言来说 PHP 的性能目前还是一个需要优化的问题。 快速开发->能用+上线+修 Bug->发展面临性能不足的问题->优化->还是不足->换其他语言重构 如果最后因性能不足或者功能缺陷导致被重构抛弃,那 PHP 这门语言是不是也丧失了他的地位? 其实在 OPCache 的引入之后就已经在往相关的方向靠拢了,个人感觉 PHP 社区目前饼画的还行,就看后期他们能不能推出让人惊艳的版本了,比如支持多线程和内存常驻(不包括 Swoole ) |
8
aofall 2020-12-26 00:18:32 +08:00
#7 引入强类型可以让性能变得更好的情况下,可以一定程度的缓解“换其他语言重构”的结局。
|
9
anguiao 2020-12-26 00:35:20 +08:00
我对动态类型完全没好感,甚至连“一时爽”的感觉都没有。
主要还是 IDE 用惯了,没有完善的代码补全,写起来真的很难受,完善的代码补全可以大大降低我查文档的次数。 |
10
sn01615 2020-12-26 00:39:06 +08:00 via Android
其实我不想约束类型的,都是 IDE 逼的
|
11
hantsy 2020-12-26 00:48:00 +08:00 1
很多年前的 PHP 5.x 就开始 OOP 了吧,5.6 已经具备成熟的 OOP 语言特性。
https://github.com/hantsy/angularjs-zf2-sample 8.0 支持 Union Type,PatternMatching 等比较潮流的特性。但是一些基础的东西,PHP 应该补充,比如 Java Collections 对应的。 OOP 编程基本上用 Symfony,Doctrine 和 Java 开发效率差别不大了。 |
12
hantsy 2020-12-26 00:51:10 +08:00
如果没有强类型约束,后期维护太难了。
|
13
MengiNo 2020-12-26 00:53:55 +08:00
快速开发感觉是个悖论。当你选择想开发速度妥协的时候,就意味着这个项目的最终归宿就是 shit mountain 。虽然绝大多数人都知道这是饮鸩止渴,但是毒发的速度永远是超过预期的。大家都想后期换语言重构什么的,但往往是还没坚持到后期,自己就把自己搞得非常难以维护最终拖死了。
|
14
MengiNo 2020-12-26 00:55:49 +08:00
毕竟都 2021 年了,idea + demo 甚至 idea + ppt 就能融到钱的故事早就被写到历史书里了。
|
15
hantsy 2020-12-26 00:57:12 +08:00
PHP 社区比较扯淡,主要是个人参与,这点与 Java 太不一样。
PSR 这一套出规范的机制,好不容易抄袭了 Java 的 JSR,将一些基础的东西全部标准化了,缓解 PHP 各项目一盘散沙的书面。 现在摆停了。 |
16
hantsy 2020-12-26 01:01:11 +08:00 1
@MengiNo 跟开发团队有关,跟语言无关,Java 见过太多的项目也一样。做为开发人员,有时心理想做好,无力回天,SB 公司,SB 管理,加上遇到一些巨婴共事。
开始求快,后面一锅粥,天天折东墙补西墙。 |
17
hantsy 2020-12-26 01:05:18 +08:00
@coolesting 要说模仿 ROR 的 PHP 框架,CakePHP 应该是的。https://github.com/hantsy/angularjs-cakephp-sample
ZF2, Symfony, Doctrine 几乎把 Java 的一套全部搬过去了。 * EIP * Spring * Hibernate 有这些基础,写 Symfony 很容易。 |
18
hantsy 2020-12-26 01:08:20 +08:00
不知不觉,发现好多年没写 PHP 了。 过几天写个 Symfony 程序玩玩。
|
19
hantsy 2020-12-26 01:10:37 +08:00
对了,PHP 8 还有内置 Attribute,不用再用 Doctrine 的 Annotations 了。
|
20
hantsy 2020-12-26 01:15:49 +08:00
除了 Symfony 适合大型程序 Module 形式的开发外,一些轻量的也开始流行了。比较典型是 Slim 这种,有 Vertx 的风格,开发比较自由,代码组织全靠自己。
https://github.com/slimphp/Slim |
23
jtsai 2020-12-26 07:23:52 +08:00 via iPhone
趋势 node python 都引入
|
24
ericgui 2020-12-26 07:43:52 +08:00
连 javascript 已经是一个事实上的编译型语言了
|
25
fenglangjuxu 2020-12-26 07:47:28 +08:00 via iPhone
我也觉得四不像了 要是严格数据类型 用 go 就行了 像别人靠近 逐渐丢失了自己
|
26
cmdOptionKana 2020-12-26 08:44:01 +08:00
@RickyC 自从有了 Go, 学习成本比 PHP 更低,没有 OOP,没有泛型,语言特性比谁都少。
|
27
cokyhe 2020-12-26 08:46:09 +08:00
go 的优势是没有那么多语法糖,读别人的代码特容易
|
28
shiji 2020-12-26 08:46:58 +08:00 via iPhone
php 的 enum 还不知道什么时候能实现
|
29
zjsxwc 2020-12-26 08:50:58 +08:00
在 php5.x 时代,使用 PHPStan,然后 level 拉到 8,PHPDoc 来声明类型,就已经是完全强类型的 php 了。
|
30
zjsxwc 2020-12-26 08:51:50 +08:00
|
31
XIVN1987 2020-12-26 09:12:07 +08:00
@cmdOptionKana
你说反了吧,,微软搞 typescript 这是在给 js 挖坟啊 你看现在知乎上关于 js 和 ts 的问题下面,,大量的回答都是夸 ts 贬 js 的,都是劝退 js 劝进 ts 的,搞得好像用 js 就落伍了似的,,要是真被他们搞成了就没人用 js 了,, |
32
sagaxu 2020-12-26 09:50:36 +08:00 via Android 1
@hantsy php 太过草根化,从初创到后期,鲜有名校毕业的贡献者。Java 圈不同,光世界第一梯队大学的 phd 贡献者,双手双脚都数不过来。
如今千人以上的大厂,大都不会考虑 PHP 了,用 PHP 也就是搞搞管理后台。 学界不爱,业界不香,能有今天的成就,PHP 已是逆袭成功的典范。 可以预期的是,php 还会活跃在初创企业和个人站长圈里,但前景是越来越差,提供不了有效职位。就算全世界 90%的网站都用 PHP,那些 cms 产业链能招几个人? |
33
putaozhenhaochi 2020-12-26 10:10:38 +08:00
@hantsy 模仿最典型的不应该是 Laravel 吗
|
34
alexkkaa 2020-12-26 10:17:39 +08:00 via Android 2
Php 有他的市场 而且就算 java 死了他都不会死。
前几年 app 火热的时候 php 式微,但是随着最近 app 饱和市场成本急剧上升,无数僵尸应用躺在那, 现在流行的微信小程序就还把以前的网站搬到微信上。为什么他能火, 因为 90%的应用都没必要专门写成一个 app , 网页完全够用。 这些微信小程序有几个后台绝大多数都是 php 没人发对吧? 这种强类型是脚本语言进化必须的, 既有动态语言的便利又有静态语言的严谨这不好吗? |
38
hantsy 2020-12-26 10:30:24 +08:00
@putaozhenhaochi Laravel,Cg 应该都没有 Cake 像,Cake 是命名,项目结构都是很像。Laravel 只是 CodeGen 做的不错,内核 还是用 Symfony Kernel 。
|
39
hantsy 2020-12-26 10:33:33 +08:00
@sagaxu 草根也有好处,没有那么条条框框,感觉它在语言层面的进化速度比 Java,C#快多了。现在反而感觉 PHP 语言部分比 Java 还丰富,工具类库不行,标准化力度不够。
|
40
kikyous 2020-12-26 10:34:47 +08:00 via Android
@alexkkaa 我反对,php 最大的保有盘在 wordpress, 小程序后台用 php 的应该不多
|
42
printhello 2020-12-26 10:46:24 +08:00
不挣扎凉的更快
|
43
wmwmajie 2020-12-26 10:51:08 +08:00
支持强制类型你可以不用,但是如果你要用的时候没有那就不行,所以必须支持强类型。
也只有支持了才是出路,才能为后续的编译铺好路。 |
44
darknoll 2020-12-26 10:57:09 +08:00
能活到今天,全是 wordpress 的功劳
|
45
hantsy 2020-12-26 10:59:42 +08:00
@RickyC Hello World 的 Slim 项目从零开始安装环境,到新建一个项目,运行起来,几行命令搞定。
``` choco install php comoser composer create-project slim/slim-skeleton:dev-master slim-sample --ignore-platform-reqs cd slim-sample php -S localhost:8080 -t public public/index.php ``` |
46
Felldeadbird 2020-12-26 11:25:25 +08:00 1
当初是你们说要向 JAVA,JS 等语言学习 。现在你告诉我 四不像?
|
47
avenger 2020-12-26 11:28:39 +08:00 via iPhone
Laravel 开发就是香啊
|
48
cabing 2020-12-26 11:34:35 +08:00
写 php 可以提早下班是真的。=。=
|
49
charlie21 2020-12-26 11:41:36 +08:00
框架是否引入变量类型约束,取决于它是否放弃对 PHP 7.x 及之前版本的兼容
app 开发者、framework 开发者和语言开发者所解决的问题不在一个层面,建议不要对话。不喜欢可以去用 JAVA |
50
hantsy 2020-12-26 11:49:45 +08:00
@Felldeadbird PHP 4 才是真正四不像,我个人印象 PHP5 以前的版本只能算是 Perl 写 CGI 的增强版本。
|
51
cszchen 2020-12-26 11:56:38 +08:00 3
使用了 Go 之后,回头再用 PHP 真实爱死他了,生态很重要,我不想什么轮子都自己造
|
52
hoyixi 2020-12-26 12:00:01 +08:00
还早,个人目测以后编程语言慢慢演化,会变得语法都差不多
|
54
hantsy 2020-12-26 12:38:37 +08:00
@avenger 不知道为什么,总感觉 Laravel,Codeigniter 的工具做得有点过头了。
我一份工作用的 PHP 4 。之后几乎都是在用 Java 。 只是之前(大概 6,7 年前)有一客户临时有个 PHP 项目,丢给我写一下,让我自己选择框架。比较了 Codeigniter,Cake,Prado 等,最终我选择了 Cake 。 |
55
ii55dd 2020-12-26 12:48:11 +08:00 via iPhone
php 其它不说,就一点,windows server 安装 mysql,mssql 驱动,你试试,版本给你限定死,升级个鬼,php 就是 linux 玩的,windows 开发都是个事
|
56
towser 2020-12-26 12:56:12 +08:00
类型约束不会提高心智负担,反而在项目规模膨胀时提高开发效率。主流动态类型语言都在引入类型约束,没什么四不像的。
|
57
hantsy 2020-12-26 13:36:20 +08:00 1
@ii5 不知道你说的什么东西。
20 年前我的第一份工作都是 Windows 下开发 PHP,编辑器直接连接公司的 Linux 服务器,使用 Apache 个人账号主页调试。 再说了,在 Windows 上,驱动这些 PHP 默认安装文件都是内置的,选择性去掉注释就行了,而且 Windows 做开发环境,直接用 PHP 内置的 webserver 跑就行了,早不需要 Wamp 那一套了。安装驱动是什么操作??? 再者,Windows 下用 VsCode 在本地的 WSL,或者本地和远程的 Docker,K8S 环境直接开发也简单( PHP 代码在原生 Linux 环境上运行)。 再者,这年头除了古董项目,有了容器了谁 SB 到新项目还在机器安装 mysql 这些玩意,我接触的 PHP 项目也没听说过在 Windows 下运行的,再说了全部容器化,什么环境一样了。 |
60
lovecy 2020-12-26 15:33:08 +08:00
@hantsy 他可能说的是 mysqlnd 吧,编译安装的时候可以自己选择一个库文件。没在 win 下编译安装过,不知道 win 下的版本问题,不过这种客户端库文件,升不升级好像意义不大。
|
63
zzerd 2020-12-26 16:04:04 +08:00
@coolesting js 的包管理真是火葬场,社区也就那样吧,不然就不会有 deno 了,我
感觉和 php 半斤八两。 |
65
zjttfs 2020-12-26 16:37:18 +08:00
后台管理 /小项目 php 很爽啊. 写接口用 go 来写. 语言互相配合.
|
66
php01 2020-12-26 17:21:01 +08:00
目前三种语言工作中都有接触用到过,java,go,php 。
只有 php 让我有自由的感觉。我喜欢这种感觉。 一个语言,可以同时做到宽松与严谨。和其他语言只能做到严谨。你说说看,哪个更自由,一个有得选,一个没得选。 |
67
CodeCodeStudy 2020-12-26 17:24:24 +08:00
静态语言越来越动态,动态语言越来越静态,这是个趋势。
|
68
Rache1 2020-12-26 17:30:11 +08:00 2
跟一群没怎么用过 PHP,对 PHP 的认知还停留在十年前的一群人在一起讨论现代化的 PHP,简直滑天下之大稽。
|
69
lovecy 2020-12-26 20:03:58 +08:00
|
70
hantsy 2020-12-26 20:10:40 +08:00
@faqqcn 大部分一提到 PHP 就想到是 PHP 4 那样瞎 JB 写的嵌入到页面的代码。
PHP 基础类库还是不足。https://github.com/hantsy/transaction-analyser/tree/master/php |
72
hantsy 2020-12-26 20:24:10 +08:00
@sagaxu https://github.com/hantsy/transaction-analyser 7 天写了 7 个版本,Go 太难了,全靠 IDE 和 Google 。
|
73
hantsy 2020-12-26 20:35:49 +08:00
@lovecy
https://www.php.net/manual/en/mysqlnd.install.php > In the official PHP Windows distributions from 5.3 onwards, MySQL Native Driver is enabled by default, so no additional configuration is required to use it. All MySQL database extensions will use MySQL Native Driver in this case. PHP 5.3 这都多少年前的事了。 |
74
EminemW 2020-12-26 21:59:25 +08:00
动态语言 ide 代码提示不完善,很蛋疼
|
75
laravel 2020-12-26 22:46:05 +08:00
做 php 的也没必要把自己限定在 php 范围内吧,多学几门语言也不难
|
77
mongodb 2020-12-26 23:30:04 +08:00
只说一句,这个开发速度快,也未必就有 Python 快。
|
79
UFc8704I4Bv63gy2 2020-12-27 20:22:07 +08:00 via Android
我一直不知道为什么 php 要用框架,尤其不懂为什么 php 要弄各种模板,它本身不就是个模板么
|
82
joesonw 2020-12-28 10:12:26 +08:00
还是 facebook 之前, 包括 HHVM 给 PHP 续了命.
|
83
hantsy 2020-12-28 11:50:28 +08:00
|
84
hantsy 2020-12-28 11:56:32 +08:00
@joesonw 我没有用过。HHVM 算是 PHP 的一点点创新,对 90%的人可有可无。
以前真正想商业化的 PHP 项目,可能都会用 Zend Engine 优化。(现在 Zend 也不是以前的那个 Zend )( Zend 工具开发 PHP 很方便) |
85
avenger 2020-12-28 14:12:18 +08:00 2
@hantsy
Backend Frameworks with the most stars on GitHub: 1. Laravel - 63.1K⭐️ 2. Django - 54.5K⭐️ 3. Flask - 53.3K⭐️ 4. Spring Boot - 52.5K⭐️ 5. Express - 51.3K⭐️ 6. Ruby on Rails - 47.3K⭐️ 7. Meteor - 42.2K⭐️ 8. Nest - 32.9K⭐️ 9. Koa - 30.5K⭐️ 仅供参考 |
86
alinwu05 2020-12-28 14:56:57 +08:00
后端用过 C++,C#,Python,PHP,虽然性能有些问题,但是 PHP 的开发效率让我无法割舍,特别是小项目,PHP 很快就搞定了。有人提驱动,扩展的问题,那应该是很多年前啦,我一直用的是 Windows 下开发,Linux 服务器部署,什么扩展都没有问题。
|
87
hantsy 2020-12-28 19:47:48 +08:00
@avenger 嗯嗯,这个列表不错。
但我要说的关注度与真正的流行趋势是两码事(不完全 100%吻合吧,但我不否认 Laravel 的确很流行 )。 这个列表上的除了 2,3,9,其它都玩过。 Meteor 的创意不错,关注度的确很高,但实际应用情况就不得而知了。1.0 开发了几年,从 0.x 版本就我开始关注,开始自己玩,到 1.0 正式放弃不再看了,还是回到 NodeJS 。 Meteor 能够进这个列表,真是意外。据我的了解,即使是在国外,只有极少数人愿意迁移到 Meteor,国内可想而了 。 |