php的糟糕
⑴ php的是“糟糕设计”吗
因人而异,不同的人有不同的习惯。
PHP是弱耐毁颂类型语言,数据类型可以变化无常,PHP的类余虚似的内置函数,函数名却风格迥异,有强迫症的人会受不昌郑了。
不过我就比较喜欢这种灵活,随便和任性。
⑵ 高质量PHP代码的50个技巧(3)
42
43
44
45
/**
Method to execute a command in the terminal
Uses :
1. system
2. passthru
3. exec
4. shell_exec
*/
function terminal($command)
{
//system
if(function_exists('system'))
{
ob_start();
system($command , $return_var);
$output = ob_get_contents();
ob_end_clean();
}
//passthru
else if(function_exists('passthru'))
{
ob_start();
passthru($command , $return_var);
$output = ob_get_contents();
ob_end_clean();
}
//exec
else if(function_exists('基悔exec'))
{
exec($command , $output , $return_var);
$output = implode(" " , $output);
}
//shell_exec
else if(function_exists('shell_exec'))
{
$output = shell_exec($command) ;
}
else
{
$output = 'Command execution not possible on this system';
$return_var = 1;
}
return array('output' => $output , 'status' => $return_var);
}
terminal('ls');
上面的函数将运行shell命令, 只要有一个系统函数可用, 这保持了代码的一致性.
5. 灵活编写函数
?
1
2
3
4
5
6
function add_to_cart($item_id , $qty)
{
$_SESSION['cart']['item_id'] = $qty;
}
add_to_cart( 'IPHONE3' , 2 );
使用上面的函数添加单个项目. 而当添加项列表的时候,你要创建另一个函数吗? 不用, 只要稍加留意不同类型的参数, 就宽好会更灵活. 如:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
慎锋铅14
15
16
function add_to_cart($item_id , $qty)
{
if(!is_array($item_id))
{
$_SESSION['cart']['item_id'] = $qty;
}
else
{
foreach($item_id as $i_id => $qty)
{
$_SESSION['cart']['i_id'] = $qty;
}
}
}
add_to_cart( 'IPHONE3' , 2 );
add_to_cart( array('IPHONE3' => 2 , 'IPAD' => 5) );
现在, 同个函数可以处理不同类型的输入参数了. 可以参照上面的例子重构你的多处代码, 使其更智能.
6. 有意忽略php关闭标签
我很想知道为什么这么多关于php建议的博客文章都没提到这点.
?
1
2
3
<?php
echo "Hello";
//Now dont close this tag
这将节约你很多时间. 我们举个例子:
一个 super_class.php 文件
?
1
2
3
4
5
6
7
8
9
<?php
class super_class
{
function super_function()
{
//super code
}
}
?>
//super extra character after the closing tag
index.php
?
1
2
require_once('super_class.php');
//echo an image or pdf , or set the cookies or session data
这样, 你将会得到一个 Headers already send error. 为什么? 因为 “super extra character” 已经被输出了. 现在你得开始调试啦. 这会花费大量时间寻找 super extra 的位置。因此, 养成省略关闭符的习惯:
?
1
2
3
4
5
6
7
8
9
<?php
class super_class
{
function super_function()
{
//super code
}
}
//No closing tag
这会更好.
7. 在某地方收集所有输入, 一次输出给浏览器
这称为输出缓冲, 假如说你已在不同的函数输出内容:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function print_header()
{
echo "<p id='header'>Site Log and Login links</p>";
}
function print_footer()
{
echo "<p id='footer'>Site was made by me</p>";
}
print_header();
for($i = 0 ; $i < 100; $i++)
{
echo "I is : $i ';
}
print_footer();
替代方案, 在某地方集中收集输出. 你可以存储在函数的局部变量中, 也可以使用ob_start和ob_end_clean. 如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function print_header()
{
$o = "<p id='header'>Site Log and Login links</p>";
return $o;
}
function print_footer()
{
$o = "<p id='footer'>Site was made by me</p>";
return $o;
}
echo print_header();
for($i = 0 ; $i < 100; $i++)
{
echo "I is : $i ';
}
echo print_footer();
为什么需要输出缓冲:
>>可以在发送给浏览器前更改输出. 如 str_replaces 函数或可能是 preg_replaces 或添加些监控/调试的html内容.
>>输出给浏览器的同时又做php的处理很糟糕. 你应该看到过有些站点的侧边栏或中间出现错误信息. 知道为什么会发生吗? 因为处理和输出混合了.
8. 发送正确的mime类型头信息, 如果输出非html内容的话.
输出一些xml.
?
1
2
3
4
5
6
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml = "<response>
<code>0</code>
</response>";
//Send xml data
echo $xml;
工作得不错. 但需要一些改进.
?
1
2
3
4
5
6
7
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml = "<response>
<code>0</code>
⑶ PHP的几大认知误区
要知道没有任何一款编程语言是可以用来实现全部的项目的,所以才会有各种各样的编程语言出现。今天,昌平java课程就一起来了解一下,在大多数软件开发工程师心目中,PHP编程开发语言都有哪些被人误解的地方。
1.PHP是一门面向对象语言,但不是基于OOPS
这是完全不缓斗吵正确的理解,尤其是Java程序员,他们认为PHP不是基于OOPS;但他们会发现许多面向对象的特征,比如,接口、方法、抽象对象等。说实话,初始版扰侍的PHP没有太多的面向对象功能,但PHP5添加很多面向对象技术。更重要的是,你也许会好奇,为什么Bootstrap代码在PHP里会变得那么简单,这个得归功于PHP与OO的结合。
2.PHP无法实现特定的功能
这个误解听起来比较模糊,但有许多开发者认为PHP不能实现内存访问等其他功能。但事实是,PHP是一门可扩展的语言,你只需用C或C++编写一个扩展,进行集成就OK了。或者,你无需创建,网上已经有成千上百个扩展可供使用,你可以根据需要,直接拿来使用。
3.PHP不安全
既然你认为它是不安全的,那为何不为它编写安全的代码呢。我承认,PHP里是有大量不安全的代码,但作为程序员,我们应销衫该尽量编写可靠安全的代码。
如果拿PHP与.NET进行比较,PHP肯定是失败的。但如果你是一个技术娴熟的程序员,你无需安全“帮助”。包括日常的安全问题,但如果他们的路径是动态生成的,那你就得当心了。当然,如果你精通所有的指令,它或许会变的更安全。
4.不适合做大型应用程序
一门语言之所以能用来构建大而复杂的应用,其自身要具有一定的可靠性和高性能,而可扩展的PHP并不符合。但是,如果你设计和开发的应用程序架构很稳定,那应用程序的性能和扩展又会有什么问题呢?
事实是,一些知名的网站都是采用PHP设计的,比如Facebook、Wikipedia、和Yahoo!等,它们都能工作的很好。
5.PHP只能用于网站开发
的确,使用PHP进行网站开发是很普遍的。但命令行接口(CLI:CommandLineInterface)可以让应用程序运行在非Web服务器上。
虽然有些应用程序对CPU的要求很高,但通过执行PHPCLI,仍然可以采用PHP进行开发和运行。更重要的是,如果你想使用PHP开发桌面应用程序,只需使用Windows特定扩展即可搞定。
6.开发过程缓慢
对于这样的误解,我实在不知道是从哪里传出来的。有可能你编写的PHP代码很凌乱、并且里面充斥着大量的MySQL语句(它们虽然很有意义,但真不应该放在那里)。而事实上,PHP有大量的框架可供开发者使用,合理使用它们会达到事半功倍的效果,大大缩减开发时间。所以,不要抱怨慢。
7.专业开发者不使用PHP
关于这个误解,坊间有各种各样的说法,比如PHP对初学者是小菜一碟,它是为那些不想认真对待开发的人准备的等等。当然,不得不承认,PHP在某些方面的确没有什么意义,但是对于这样的误解,真的是可笑之至。如果这里有许多Web应用程序都是使用PHP开发,那么想象下,一向严谨的开发商却对PHP敬而远之,乃是完全错误的。
⑷ 为什么说用PHP开发大型系统令人不爽
笔者在过去的四年里一直致力于PHP应用的开发 PHP确实十分容易编写 但是PHP也有一些十分严重的缺陷
下面笔者会给出自己的理由 为什么PHP不适合于比小型业余网站更大的网站
对递归的不良支持 递归是一种函数调用自身的机制 这是一种强大的特性可以把某些复杂的东西变得很简单 有一个使用递归的例子是快速排序(quicksort) 不幸的是 PHP并不擅长递归 Zeev 一个PHP开发人员 说道 PHP (Zend)对密集数据使用了栈方式 而不是使用堆方式 也就是说它能容忍的递归函数的数量限制和其他语言比起来明显少 见bug 这液亏烂是一个很不好的借口 每一个编程语言都应该提供良好的递归支持
许多PHP模块都不是线程安全的 在几年前 Apache发布了Web服务器的 版 这个版本支持多线程模式 在这个模式下 软件一个一部分可以同时运行多个 PHP的发明者说PHP的核心是线程安全的 但是非核心模块不一定是 但是十次有九次 你想要在PHP脚本中使用这种模块 但这又使你的脚本不能合适Apache的多线程模式 这也是为什么PHP小组不推荐在Apache 的多线程模式下运行PHP 不良的多线程模式支持使PHP常被认为是Apache 依然不流行的原因之一
请阅读这篇讨论 Slashdot: Sites Rejecting Apache ?
PHP 由于商业原因而不健全 通过使用缓存 PHP的性能可以陡增 %[见基准测试] 那么为什么缓存没有被构建在PHP中呢?因为Zend——PHP的制造者 它在销售自己的Zend Accelerator 所以当然 他们不想抛弃自己的商业产品这块肥肉
但是有另一个可选择空厅的 APC (Zend后来推出Zend Optimizer 免费的加速器——译者)
没有命名空间 设想某个人制作了一个PHP模块用来阅读文件 模块中一个函数叫做read 然后另一个人的模块可以读取网页的 同样包含一个函数read 然后我们就无法同时使用这两个模块了 因为PHP不知道你要用哪个函数
但是有一个很简单的解决方法 那就是命名空间 曾经有人建议PHP 加入这个特性 但不幸得是他没有这么做 现在 没有命名空间 每个函数都必须加上模块名作为前缀 来避免名称冲突 这导致了函数名恐怖得长 例如xsl_xsltprocessor_transform_to_xml让代码难于书写和理解
不标准的日期格式字符 很多程序员对 日期格式字符 都很熟悉 它是从UNIX和C语言中来的 其他一些编程语言采用了这个标准 但是很奇怪的 PHP有它自己的一套完全不兼容的日期格式字符 在C中 %j 表示一年中的当天 在PHP中他表示一个月中的当天 然而使事情更混乱的是 Smarty (一个很流行的PHP模版引擎)的 strftime 函数和 date_format 函数 却使用了C/UNIX的格式化字符
混乱的许可证 你也许认为PHP是免费的 所有的在手册中提到的PHP模块也是免费的 错了!例如 如果你想在PHP中生成PDF文件 你会在手册中发现两个模块 PDF 和 ClibPDF 但是这两个都是有商业许可证的 所以 你所使用的每个模块 你都要确保你同意他的许可证
不一致的函数命名规则 有些函数名称是有多个单词组成的 一般有三种单词组合的习惯
直接拼接 getnumberoffiles 用下划线分开 get_number_of_files 骆驼法则 getNumberOfFiles 大部分语言选择其中一中 但是PHP都用到了
例如 你想要把一些特殊字符转换成HTML实体 你会使用函闹漏数entities (直接拼接单词) 如果你要使用相反的功能 你要用到它的小弟弟_entity_decode 由于某些特殊的原因 这个函数名是由下划线分隔单词 怎么能这样呢?你知道有一个函数叫strpad 或者他是str_pad?每次你都要查看一下到底这个符号是什么或者直接等他出现一个错误 函数是不分大小写的 所以对于PHP来说rawurldecode 和RawUrlDecode之间没有什么区别 这也很糟糕 因为两个都使用到了同时他们看上去还不一样 混淆了阅读者
魔法引用的地狱 魔法引用(Magic quote)可以保护PHP脚本免受SQL注入攻击 这很好 但是出于某些原因 你可以在php ini中关闭这个配置 所以你如果要写出一个有弹性的脚本 你总要检查魔法引用是开启还是关闭 这样一个 特性 应该让编程更简单 而事实上变得更复杂了
缺少标准框架 一个成长中的网站没有一个整体框架 最终会变成维护的噩梦 一个框架可以让很多工作变得简单 现在最流行的框架模型时MVC 模型 在其中表现层 业务逻辑和数据库访问都分离开了
很多PHP网站不使用MVC 模型 他们甚至没有一个框架 甚至现在有一些PHP框架同时你都可以自己写一个 关于PHP的文章和手册没有提高框架的一个字 同时JSP 开发人员使用像Struts的框架 ASP开发人员使用 net 看起来好像这些概念都广泛被PHP开发人员所了解 这就说明了PHP实际上到底是多专业
总结什么问题?
对于非常小的项目 它可以是一个十分符合人意的编程语言 但是对于较大的和更为复杂的项目 PHP就显出他的薄弱了 当你不断地摸索之后 你会发现笔者提到的某些问题的解决方案 所以 当解决方案已知之后 为什么不能修正他呢?另外为什么这些修补不在手册中提到呢?
一个开源的语言十分流行是一件好事 但不幸得是 它不是一个伟大的语言 笔者希望所有的问题能有一天得到解决(也许在PHP ?) 然后我们就将拥有一个开源语言 他既开源 又好用
到现在 当你要启动一个多于 个脚本页面的项目的时候 你最好考虑C#/ASP NET 或者 Java/JSP或者也许python同样是一个更好的选择
lishixin/Article/program/PHP/201311/21371
⑸ 电脑培训分享PHP语言要注意的避免的几大误区
第一:PHP程序开发的作用很单一
很多传闻说PHP的作用很单一,仅仅作用在网站的开发的方面。虽然听起来很像真的,PHP也确实是网站开发里常用的语言,但这并不代表它的作用很单一,有很多CPU的应用程序都是需要PHP来开发的,PHP的作用很多,也可以用来开发桌面程序,所以这个谣言不可信。
第二:PHP程序开发的过程很慢
有一段时间PHP的代码很乱,所以PHP的开发过程的速度就相对缓慢了很多。后来出现了很多PHP的框架,速度就可想而知了。不管有多复杂,开发的速度都提高了好几倍,所以关于PHP的开发过程很慢的这个谣言,也只是针对某个时期。
第三:PHP程序开发的使用人员都很不专业
很多人认为专业的人员是不会用PHP的,他们认为PHP很不专业,用它的人肯定也很LOW。这种说法比较荒谬,PHP的使用还是很广泛的,一些大型的程序和很多的网络应用都是用PHP来建构的,PHP的使用感受还是很专业的,所以这是说法实在是不可信,也很不专业。
第四:PHP程序开发的性能不好
这个问题也不能说全错,还是正滑悔要分情况来讨论。因为任何事情举正都有好的和不好的方面,因为PHP会受到很多东西的干扰,例如垃圾的代码之类的,都会影响PHP的性能。但是如果你的实力够好,能力够强的话,这些问题就都不是问题了。因为你可以很扎实稳定的用PHP。
第五:PHP程序开发安全性能不太好
有一部分的人觉得PHP应用很不安全,这种说法也是片面的,因为刚开始的时候学习曲线是很好的选择,比较容易学会,所以电脑培训认为作为一个程让闷序员你就要在使用的这个过程中让它相对的安全一些,所以这对程序员的要求还是很高的。
⑹ PHP到底有多糟糕
php是web开发第一语言,这已经是坐稳了的事实,因为使用简单,工具完善,开发效率高等优点为它积聚了大量的粉丝,号称世界上最好的语言。 然而,就算是世界上最好的语言也有缺陷,下面我挑几个php语法层面不那么好用的特性吐槽下。
变量面前的美元($)符号
我想不明白当初php语言的设计师是怎么想的,为什么非要在变量名面前加上这个美元符号?每次我书写变量时必须要按一下shift +4键,用其它语言可以很流畅的写代码,在php中却老是被按这个shift打断整个过程,这除了能给程序员带来麻烦,我实在看不到有其它一丁点的好处。网上流传着的说法好像是因为带美元符号代码解析起来更容易, 性能更好。但是解释类型的语言又不只有php ,为什么其它语言就不用让程序员打这个讨厌的美元符号。每天看着满屏的美元符号,我口袋里的钱也没见多一分呀。
访问对象成员要使用箭头符号
明明按一下点号(.)就可以方便快捷的搞定的问题,却非要使用简单符号(->)来代替,真的是借我一百个脑袋也想不明白php设计者在设计这个特性是什么逻辑。难不成是因为php解释器最终会把php的代码转换成c代码执行,而c中访问指针的成员就是使用箭头符号的。如果是这样那显然是php的设计者们偷懒了,难到不能在转换成c执行的过程中多一步将点号转换为箭头符号的过程吗?不要告诉我又是因为性能问题而办不到,他们就不能为程序员想想?
数组即能当列表也能当字典
写一个函数,返回一个数组类型,但是在函数的外面,鬼知道这个数组是一个list还是一个map?写php代码不知道被这个特性坑过多少回,如果是别人写的函数, 又没有注释,那非得跑进函数里看个明白才知道应该这么样使用这个函数才是安全的。难到就不能把array拆成两个独立的类型分别代表list(列表)和map(字典)吗?这能为程序提供很大的便利,写的代码也更加不会出错。
匿名函数使用外部变量必须使用use关键字导入
这个特性不能说完全没有优点,对于代码的可维护性还是能起到正面的作用的,因为这么做能让我知道我在匿名函数体里面对于外部会有哪些依赖,让代码更可控。然而,这种写法真的是非常的不方便,每次写lambda时,要用到外部的变量时,都要使用use导入,把代码搞的看起来很臃肿,而且,因为其它语言没这个限制,习惯已经养成,所以每次都会忘记使用use导入,导致代码出错,增加排查问题的时间,这真的不是什么好玩的事。
用include导入文件
当把代码模块化时,然后在其它文件中使用,每次都需要使用这个include把文件导入进来,而且还要考虑路径的问题,在结构复杂的项目中,非常让人蛋疼。而像Java和Python之类的语言中,代码管理机制设计的非常好,想用什么import进来就可以了,根本不用考虑路径啊,文件名大小写啊之类的问题,能大大的提升开发效率。虽然,有框架可以解决这类问题,但毕竟是外部实现,使用起来总归不是那么顺畅。这也算是php一个比较大的毛病了。
总结的这五点算是php中存在问题的典范了,希望php团队能加把劲,把这些问题在未来的版本中优化掉,让开发者写代码时有更好的体验,更高的效率,让世界上最好的语言名副其实
⑺ PHP为什么说是最好的编程语言
尝试网络”PHP是最好的语言”,发现指向较多的是那个关于程序员的笑话。 但是如果这个梗来自于这个笑话的话,那么为什么在笑话里这个程序员不说C++/python/haskell或者别的什么语言是最好的而要说PHP是最好的呢?所以感觉似乎最早的出处不在于此。 有人知道吗?
来看看知乎网友们是怎么看待这场语言之争的吧!
网友回答
网友A
“为什么在笑话里这个程序员不说 C++ / Python / Haskell 或者别的什么语言是最好的而要说 PHP是最好的呢?”——因为说任何其他语言“最好”都并不好笑啊。
任何掌握超过两种以上非 PHP 编程语言且具有一定常识的程序员都会本能地意识到 PHP 的问题所在,曾经有一篇汇总性的文章在此: PHP: a fractal of bad design / fuzzy notepad (译文版可见:五大受损, 全面解析PHP的糟糕设计,但翻译得很烂),历陈 PHP 破败之处,激荡深远。如果你没时间去读那篇长文,那我告诉你一个简单的例子来说明 PHP 有多匪夷所思:PHP 的核心函数命名很不一致,有 “strptime”这样类 C 函数的名字,有“nl2br”这样的简写,却也有“htmlspecialchars”这样的长名。后来人们发现这种不一致并非偶然,而是当 PHP 还是只有不到一百个函数的小语言的时候,其作者决定用函数名的字符数量——来作为函数的 hash(!)。由于这个愚不可及的决定,PHP 的函数名长度要尽可能地长短有秩、均匀分布,影响一直延续至今。甚至有好事者将上述文中:
You pull out the hammer, but to your dismay, it has the claw part on both sides.这一句严肃对待,做了一把 PHP 锤子:
试想你走进五金从业者公会的啤酒馆,看到墙上挂着从钉子到电动螺丝刀的各式工具当作陈列品,而你在端详一阵之后指着其中的这样一把锤子,说“啊,这是最好的工具”,你觉得酒馆里的人会是什么反应呢?
网友B
因为php和最好的语言几乎没有关系。。一般用来讽刺一些没见过世面,把自己归属于某一种编程语言的语言教徒。
事实上每一门语言都有其设计的灵魂,有它的取舍。很难说什么是最好的。比起做个脑残粉总是鼓吹自己擅长的语言,不如多学几门语言,开阔视野。
我们都喜欢分享自己的价值观。希望被认可,希望有更多同伴。其实这也是在给身边的人洗脑,这很正常。但有时候自己在某一领域的付出会成为枷锁。
网友C
Windows 是最好的操作系统!
以上为纯吐槽。
我看楼上还有很多还在讨论PHP不是最好的语言,还好我不是程序员,只是稍微懂一点代码,我认为之所以说这个梗,是因为PHP最普及和最流行,大多数不管懂不懂程序都知道或听说过,所以才能引起共鸣。这就是我上面那句吐槽的含义。
如果上面那句吐槽改为:Ubuntu 是最好的操作系统!(围观群众:What?)
网友D
难道不是这么来的?某女:你能让这个论坛的人都吵起来,我今晚就跟你走.
某软件工程师:PHP是最好的语言!
某论坛炸锅了,各种吵架…
某女:服了你了,我们走吧 你想干啥都行.
某软件工程师:今天不行,我一定要说服他们,PHP必须是最好的语言
某女:…….
网友E
编程语言之争由来已久,
但是php和java确实是最受争议的。
自从web2.0热起来后,java逐渐淡出了。
究其原因并不在于语言本身,
而在于用语言的人。
因为php确实简单,门槛最低,
所以很多并不适合编程的人涌了进来,仅仅为了糊口罢了。
这些人的各种无敌言论自然让很多专业的人呲之以鼻。
天龙八部里有个星宿派,
虽然在施毒方面有些特长,但门下弟子总的来说武艺平平,
其实江湖武功低微的人多的是,低调便是了,谁又老是盯着你呢?
然而这个新宿派却偏偏跑出去招摇过市,胡吹本门派武功盖世,大有傲视天下之势,
那么其他门派的人会怎么看他们呢?
php就是语言江湖的星宿派。
网友F
对我来说PHP 就是最好的语言。它不是炫耀技巧、扯蛋概念的东西。完成任务才是程序员要做的事。没什么语言可以高效开发同时高效运行。
相关利益:写PHP17年。
网友G
作为一个十多年老phper,看到这句话,也会笑。虽然我也会c c++ java go ,并都做有相应产品。 世界上一半以上的网站是php, bat, fb,处处有它。但这些大公司在近些年,都在试图改造它。淘宝去php改java,网络重写扩展,fb搞xhp等等。但结局是搞了这么些,这几大公司却收效甚微。比之前的性能提升不了太多。在我理解看来,无非是想提高一下b格而已。
在php的初始阶段,php是连框架也没有的。直到今天,php创始人lerdorf仍然反对mvc,因为他觉得影响了性能。在那个年代,同样的一个应用,做java的待遇比php高一倍。因为php简单。如果跟你说一个人花了一个星期用php写了个论坛,跑得也还蛮好,你一点也不要惊讶,后来这个论坛还卖给了阿里。面向过程的php,成就了无数小的站点。
后来是一个框架辈出的阶段,phper们终于也有了跟java一样的mvc,待遇也慢慢接近于java了。大家明白了一件事,大项目,得有点高深的学术内涵才能忽悠的住。opp也更加规范了,你能找到的设计模式,php全都有,于是phper放言:你还敢说php不高级, 不入流? 而实际上,设计模式,真正能用到的就那么一两个。对于解析性语言,我只能,呵呵。
归结一下,php,我觉得更像屌丝逆袭。 然后,笑的人有两种,一种是屌丝的自嘲,另一种是高富帅的妒忌。
网友H
先说一下php的优点:
跟py相比,它不需要django之类的库,原生就支持web。小白们不需要配置什么东西,门槛就低了。而且php的语法是类C的,函数命名大部分也是类C的,大部分码农在学校或多或少都学过C/C++,接触php肯定要比py顺手。
跟java相比,支持php的主机显然更多。云主机兴起之前,是个虚拟主机都是lamp,都支持php。而虚拟主机是最便宜的解决方案,也就是说随便租个虚拟主机就能跑php的网站,成本就低了。
我个人认为没有什么最好的语言,只有最合适的语言。php之所以在web2.0的时代异军突起,击败了py,原因跟php坑不坑没有关系,跟契机有关系,跟他在那个环境下合不合适有关系。把php的流行归功于什么最好的语言简直是胡扯,也是没动脑子。
网友H
大部分敢于说自己是最好的语言的语言,至少有一部分人是真这么认为的。
比如说C语言最好的,最差最差也有一部分C语言核心开发者有信心这么说。
但是PHP语言是一个连开发者都不敢‘声称是最好的语言’的语言。
这是不言自明的公设,不需要证明。
小圈子有个笑话。
会不会用PHP是有一个明确判断标准的:
只有觉得PHP是个烂语言,才有资格说“我会PHP”。
如果你连PHP有多烂都感觉不出来,请别说“我会PHP”“我会编程”。
网友J
因为php算不上一种语言。就好像说“射钉器是世界上最好的武器”一样。
⑻ PHP的优缺点是什么
HP应该算是现在大中小非专业网站企业会优先使用的网站建设编程语言,相对于ASP和JSP来说,PHP在在很多方面更适合个人以及小型企业做开发,这主要是因为PHP本身独特的优势导致的,那么下面小编就来为大家盘点PHP得到众多企业支持的原因。
PHP的优势包括:
1、开放源代码
由于PHP开放源代码,因此基本上可以在网络上找到适合自己的源代码。
2、免费性
和其它技术相比,PHP本身免费,并且也是开源代码。
3、快捷性
PHP程序开发快,运行快,技术本身学习快。由于PHP可以被嵌入于HTML语言,新词相对于其他语言来说编辑简单,实用性强,更适合初学者。
4、跨平台性强
由于PHP是运行在服务器端的脚本,因此可以在多种平台上得到应用,包括了UNIX、LINUX、WINDOWS、Mac OS等系统。
5、效率高
PHP由于消耗相当少的系统资源,因此工作效率更高。
6、图像处理
一般来说,PHP动态创建图像,而且目前PHP图像处理默认使用GD2。因此也可以配置为使用image magick进行图像处理。
7、面向对象
在PHP4,PHP5 中,面向对象方面都做出了很大的改进,因此PHP完全可以用来开发大型商业程序。
8、专业专注
PHP同为类C语言,而且更重要的就是PHP以支持脚本语言为主。
上面介绍的八点内容就是关于PHP被广大企业使用的优势,其实PHP相对于其它几种语言来说,更适合初学者学习和使用,因此想要入门的朋友可以多找一些材料来学习。
⑼ 为什么说PHP是个集中营
有一天我跟在 DUMBO 的一个非常棒的创业公司的老板聊天 谈到为什么非PHP界的开发人员普遍轻视PHP和PHP相关社区 他提出了一个观点让我印象很深 很大程度上是因为以前从来没有听到过这样的说法
如果你不知道大多数的程序员都会对PHP发什么样的牢骚 那么 这些牢骚差不多会像这样
语法丑陋
缺乏其它语言都有的一些必要的特征(在 版本之前 没有命名空间 闭包)
不一致的函数命名 使用惯例 以及其它一些怪异的东西
过程和面向对象的杂混
基本上 %的PHP项目都烂如一堆狗屎
但他所说的PHP的问题却是另外一个问题 他并没有说这种语言有问题——他认为这种语言被一种常见的文化现象包围着 是一种通常由语言的创造者造就的文化传统 现在看来这对一些糟糕的编程实践方法起到了鼓励作用 也就是它使PHP代码变的劣质和不可维护
这种一个语言或框架上体现出创始人的哲学思想并被相关社区推崇的现象是的确存在的 他拿出拿慎带来Ruby和其创始人 Matz 作为例子 Matz想要的是一种易读易写 能提高程序员工作效率的语言 没看见Ruby开发人员们言之必称快速开发以及这种语言的优雅?
接着就是 DHH 和他的Rails框架 还有 Guido 和他的Python语言 于是我在想 Ra *** us 对于PHP呢?
Ra *** us Lerdorf给人的印象非常的有趣 他创建了最初版的PHP语言 而且一直在改进这种语言 他在PHP社区里被当作神一样崇拜 他在PHP的任何方面都 享有最大的权威 他被众多的会议邀请去做演讲 同时被大网络公司(yahoo )所雇用 他获得了所有人的尊敬——尽管有这样一种事实 他成了大多 数的非PHP程序员所鄙视的PHP上的众多问题的形象代表
Ra *** us倡导避免使用框架 而把PHP更多的当作一种模板语言 对他来说 这种做法能产生直接的运行效率和可扩展性(程序负载可知) 而对于其 他的所有人来说 这种做法导致了大量的乱炖似的过程式代码 大量的无法维护的项目 自从 年PHP诞生至今大概 年左右的时间里 所有的PHP项 目都是按照这种指导写成的
与此同时另外一个问题突然的出现了 在PHP 之前 PHP的初期 PHP获得了大量的新手的追随 这种语言的入门门槛出奇的低 任何人都可以 下载自解压的×AMP Windows程序安装包 在 两分钟内用上这种语言 除此之外 那时在Web开发方式上对MVC模式的共识并没有真正的出现 这样一来你可以想象 一群 新手和一个缺乏好的开发实践方法的语言组合到一起能创造出什么?一堆无法维护的垃圾 而且整个大环境都是这样
不要误解我的话——优秀的PHP开发者还是不少的 即使是当时 但是 就消芦像我说的 粗制滥造的菜鸟作品到处都是 当牛仔式无羁的PHP程序员在没有 指导原则的情况下聚集到一起开发程序 于是像PHPbb PHPNuke以及很多的粗糙的 php 程序包就出现了 但是你能单纯孝扮的责怪PHP开发人员吗?不能!其它的Web语言巨人 ASP和Perl 同样恶 名远扬 同样宣传着一种乱炖式的开发方式
所以这就是为什么PHP会得到这样的骂名 是因为它的历史流传 大多数已经转向Python Ruby和Java的PHP开发人员并没有在MVC概 念兴起时回头去重新思考这种语言 此外 更有一些像”Ruby公子“Zed Shaw抱怨一些程序员的思想”受PHP毒害“这样的露骨的讽刺 像这样的言论在 RubyInside 上很盛行
PHP是个集中营
但像Zend和CodeIgniter这样的框架的出现把这种语言推向了正确的开发方向上 事实上 它把PHP推向了与Ra *** us所希望看到的相反的方向上了 查看一下Zend和CodeIgniter框架 你会发现它们是为数不多的文档写的很好 代码写的很好的程序
大多数学习了Ruby的开发人员同时都要学习Rails和MVC知识 PHP在此之前已经被使用了整整 年 对于那些新手来说 可恶的Ruby没 有给他们这段时间让他们自由发挥 Rails有现成的标准指导 它的入门门槛相对高很多 通常会把一些缺少经验的开发人员挡在门外
事实上 PHP应用程序是可以向其它种语言那样写的很好 而且还会具有一定的运行速度上的优势 PHP世界里的MVC风格的开发方法兴起只是在近几年才出现的现象 不得不承认 我们应该感谢Rails带来的这种变化
那么 PHP如今是个什么样呢?
各种标准(非统一 但大多数项目使用MVC 很少有垃圾般的过程式程序)
很低的入门门槛
速度和可扩展性(在各种脚本语言里PHP应该是最好的)
有一个好的单元测试框架
有最好的各国语言翻译的文档
除此之外 互联网上大多数有影响的网站都使用PHP作为它们后台的语言或工具 诸如Facebook Digg 维基网络 Wordpress Drupal等等 我相信 对PHP有一个深入的掌握会使一个程序员打开更多的未知领域的大门
如果你不赞同上面所说的 请留下评论 或email给我——我想听听你为什么不这么认为
事实上 我并不是一个PHP迷 我对语言没有感觉 我使用PHP大多是因为——你猜到了——有人愿意付钱给我 所以一切归咎于此
如果你希望在软件设计上做出明智的决定 PHP是你开发Web应用程序的最佳选择
lishixin/Article/program/PHP/201311/21122