都说 Java 比 PHP 稳定安全,可维护性好,为什么啊,难道就因为 sun 公司提供的一系列的技术支持?难道像阿里那种电商就不能 PHP?如果阿里用 PHP 较之 Java 会出现哪些问题?本人入 PHP 只有一年时间,参与过类似搜房的房地产网站开发,做过几款 App的接口,目前兼职参与搭建一个多用户的电商平台。之前在学校只懂 Java 皮毛。 感觉 PHP 好的,真搞不懂 PHP 哪里不如 Java 安全稳定。
回复内容:
这东西完全看人。。。那些说,java因为它的特性,不至于被菜鸟写太乱的我也只能呵呵了。你们也太小看菜鸟的实力了。 咦,看来我有资格来谈一谈,,,
1.编码规范
JAVA大小写敏感,PHP对 函数名、方法名、类名是不区分大小写的。
这在生产中容易导致问题,比如window系迁移至类Unix系。
在编码规范上SUN给出了一个好的风格样式,再加上使用的各类Jar包的规范。
一个菜鸟只要用心,是不会写烂代码的风格的。
PHP确有些小头痛呢,因为之前流行的是面向过程式编程。
独立开发者各有各的风格,个人觉得那些DISCUZ、DECMS等等是带坏一票人啊。
二次开发那个命名随意,真是任性。
当然,现在PHP也支持OOP了,各类框架的命名风格也一定程度的约束了编码人员的风格。
当然,要写烂一样很简单。
再加上是弱类型语言,代码质量的好坏比JAVA,对程序员的要求是更高的,虽然PHP简单。
正如 @Cweili 所说:“安全和稳定就需要开发者的水平来保证了”。
结论就是JAVA容易养成更好的统一编码规范,利于维护、阅读。
菜鸟都能写出一手规范的代码。
2.变量、强类型
强类型语言,导致变量之间转换繁琐,定义、初始化、转换麻烦。
JAVA中,代码块的很大一部分是变量的定义、初始化与转换,又臭又长。
如果忘记初始化,程序容易报空指针错误。
PHP在这一块就很好,变量随处用。再加上PHP的可变变量特性。
同样的一个route功能实现,JAVA要繁琐太多,这也是我对强类型语言一直诟病的。
PHP可以省去大量繁琐的定义、初始化和类型转换,代码结构轻便,更加专注于业务逻辑上。
JAVA强类型也决定了代码在编码时期的严谨性和可靠性,这个比PHP优。
PHP一个可变变量可能就会让你无法重构,所以对IDE不是很友好,调试起来你要发疯。
JAVA重构方便,但结构笨重,开发节奏慢,调试倒是很方便。
拿PHP来做数据安全要求高的业务还是不建议的。
3.异常、业务完整性
PHP的生命周期(PHP的生命周期)设计决定了它的异常处理功能的使用没有JAVA广泛。
接触过的如DISCUZ、DECMS、ECSHOP这些系统对于异常处理很弱。
很少使用try{}catch{}处理异常,因为一旦执行期发生异常就可能导致程序崩溃,
对于业务性要求高的系统来说不是一件好事。
谁都不希望执行到一半,程序异常就崩溃了吧,那业务回滚怎么办?
就如 @石峰 说的:“入门简单的语言,给我的感觉是想要用的好其实更难,比如js或者php”。
个人看法有限,知友请轻喷!
PS:
为什么大型网站前端使用 PHP 后台逻辑用 Java? - Java
PHP 和 Java 的主要区别有哪些? - 编程语言 语言选择不决定代码稳定与否与可维护性高低,这两者主要取决于写的代码本身。
如果用Java和PHP开发一般web后端程序,安全性取决于写的代码本身是否安全,如是否总是做输入检查,XSS预防等等,而不是用的语言本身是否安全。
特例可能是和Finance相关的业务,通常不考虑用弱类型语言来写,这有部分安全的考虑,但更多是精度和效率。 PHP 垃圾程序员太多。某天我生成了 PHP 的 SDK 给 PHPER ,然后人家都不 include 文件的,就是一口咬定我得接口有问题啊调不通啊,唉,都不知道他们怎么面上的。。。。。。 PHP 还是一门好语言来着。 我觉得楼主的假设是错的

阿里系的规模和历史使很多技术选型不能完全靠技术层面来决定,不是一个好参考对象。
例如说,没记错的话淘宝最初的最初就是基于一个PHP框架快速开发出来的。后来规模稍微大了一些,请来Sun做技术顾问,自然而然转为用Java EE。有很多淘宝的页面是用Velocity模版写的也是历史原因,很难说它当时是不是最好的(至于很多年后它还好不好就更加不好说了)。一言难尽。题主如果对淘宝的技术演进背后的故事感兴趣的话可以读读@子柳的《淘宝技术这十年》。
至于笼统的“为啥PHP没Java稳定”,这话题还是留给各语言/框架教徒们战了(逃 因为大量低水平php程序员的存在。
他们真能把code写的非常之烂。
java规矩多,写烂不容易。 记得看过一句对java的评价,java是一种工业级的编程语言,个人以为很有道理。无论使用者水平如何,java开发出来的程序不会太差。
而入门简单的语言,给我的感觉是想要用的好其实更难,比如js或者php。做了很多封装也就意味着隐藏更多原理,原理不明白自然没法做的更好。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Linux new version
SublimeText3 Linux latest version

Notepad++7.3.1
Easy-to-use and free code editor

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver CS6
Visual web development tools
