从ASP.NET背景出发,什么是使自己熟悉PHP的好方法?[关闭]


10

目前,我对在ASP.NET环境中构建工具/ Web应用程序非常满意。我并不是真的想离开tbh,因为我真的很喜欢C#,ASP.NET,MVC 3,Visual Studio等。

但是,现在我对PHP几乎一无所知,这似乎是我想纠正的缺陷。

是否有任何书籍(或其他学习方法)将是学习PHP的好资源?显然,有很多入门的PHP书籍,但我已经对构建网页所涉及的许多内容感到满意,并且对关注PHP本身(可能与某些入门的PHP书籍的范围不兼容)感兴趣。

我仔细阅读了《 PHP手册》,但看起来似乎不太顺利。有没有适合的PHP入门书?当翻阅这些样本时,我想念大多数书籍所包含的凝聚力。还有很多信息,但是与初级学习工具相比,它更像是编码时的参考。


5
为什么您认为不了解PHP是您需要纠正的缺陷。是否不知道需要纠正的缺陷是Rails,Django,J2EE,node.js等?在您当前的工作领域中是否真的需要了解和使用PHP?
雷诺斯2011年

1
@Raynos好吧,PHP的普及程度超过了rails,django,node.js的总和……
yannis 2011年

您为什么(不是一头雾水)希望通过PHP变得更好?是为了学习在一个更具动态性,可解释性的环境中发展,还是仅仅因为那里有太多东西而学习?
sbrenton

1
@Raynos-市场份额。有关php的知识对比较解决方案,评估问题,帮助朋友等很有用,比您列出的imo示例高。我不想离开asp.net,因此了解“最佳”替代环境比知道最流行的环境有用。
艾瑞克(Eric)

1
迈入MVC3可能是一个不错的第一步
Daniel Little

Answers:


7

学习PHP的最佳资源是PHP手册。它的编写和结构都非常好,并且是PHP社区最大的资产之一。如果您对ASP.net充满信心,则该手册足以帮助您入门。

在开始阅读之前,您应该设置一个PHP堆栈。您可以自己安装Apache,PHP和您喜欢的数据库(SQLServer很好)(这非常容易),也可以设置现成的堆栈,例如XAMPP。XAMPP将安装:

一口气(加上一些其他东西)。缺少的一个重要库是phpUnit,它显然可以帮助您进行单元测试。

然后,您应该安装一个IDE,显而易见的选择是带有PHP开发工具(PDT)的Eclipse Classic适用于PHP的Netbeans。还有很多其他的,但是我推荐这两个。我会同时使用它们,如果您不能在它们之间进行选择,Netbeans会更容易掌握,但是您应该真正评估两者,并自己决定哪个更适合您-我没有在Visual Studio中使用过时间长了,我真的不知道您对哪个IDE可能更熟悉。

当您阅读了本手册的基础知识时,应该开始考虑MVC框架。同样,我将推荐两个:

如果您允许我一个愚蠢的隐喻,那么Zend Framework是野兽,而CodeIgniter是美丽。在ZendPHP背后公司)的支持下,Zend Framework的学习曲线非常陡峭,您几乎可以使用它进行所有操作。CodeIgniter更容易掌握,为初学者提供了很好的文档,并且相当受欢迎。但是它的大部分代码库都是过时的废话,因为不久前它们曾经支持PHP4。

对于初学者来说,显而易见的选择是CodeIgniter,但不要卡在它上面。将其用作学习工具,并尽快移至Zend Framework。同样,PHP世界中还有更多的MVC框架,但是这两个是我推荐的。

至于书籍,一本很棒的非初学者书籍是PHP Objects,Patterns and PracticeSitepointPHP书籍总是很容易阅读。如果您爱上了PHP,那么您应该真正考虑订阅PHP Architect

最后,查看有关纯技术原因将PHP作为首选方法的精彩讨论。


更新:其他一些在线资源,主要针对非初学者:

如果出于某种奇怪的原因,您想在IIS而不是Apache上使用PHP,那么Microsoft的Windows上PHP就是一个很好的起点。IIS上的PHP可以正常工作,并且是一个有效的选择,特别是对于.Net开发人员而言,但您确实应该使用Apache(以及MySQL或PostgreSQL而不是SQLServer)来获得完整的PHP经验,并确保您的技能可以移植到任何其他流行的软件上操作系统。您不想错过mod_rewrite带来的欢乐。


个人说明:对PHP有很多讨厌的地方,其中有些是合理的。如果您决定这样做,那么您必须对在此过程中会遇到的各种PHP资源,脚本,库非常批评,那里的废话太多了,对于初学者来说,不可能知道其中的区别。PHP的广泛流行可以转化为一个非常庞大且有用的社区,使您的技能具有很大的可市场性,成千上万的博客,但也可以转化为数千TB的糟糕代码。


2

Yannis在这里有很多要说的东西,但是我读了《构建自己的数据库驱动的网站,第4版》,里面充满了我所需要知道的一切,以开始正确的道路来开发专业的PHP Web应用程序。

在开始进行PHP工作之前,我还专门在.NET上工作。PHP易于使用,但是在开发大型应用程序时存在一些特殊的问题,这本书使您入门。

对我来说,一个问题是PHP如何严格来说不是一种面向对象的语言。它具有过程形式和面向对象形式的各种功能,并且要花一些时间才能适应,这源于一种将一切都组织成类和名称空间的语言。

另一个问题是您可以轻松地将PHP中的所有内容混合在一起,使事情变得更加困难。在.NET中,您使用的工具(例如Visual Studio)通过为您做一些工作来指导您实际实践良好的编码标准。通常,.aspx页会将其HTML标记和C#代码分成两个文件。

如果您是.NET工具的重度用户,并且喜欢使用ASP.NET控件,则另一个问题是您可能会遇到PHP中缺少控件(GridView等)的问题。我知道有很多库/框架可以为您提供类似的东西,但它们并不完全是基本PHP软件包的一部分。

对我来说,另一个问题是在PHP中如何大量使用Arrays和Hashes服务于.NET中的集合。它们无处不在,习惯一个事实,即数组不仅仅是相同类型的对象/标量单元的有序列表,这将是一个很好的选择。它们可以充当收集对象的服务器,以容纳各种东西。

我可以继续说下去,但要提到我发现PHP非常特有的主要事情之一(我不知道它在其他语言中也可能很常见)是使用“包含”(及相关)函数的频率如此普遍。我可以说Sitepoint的书可以帮助您快速掌握所有这些内容。


我的答案中有指向Sitepoint的php书籍的链接,它们都很出色。您能否扩大回答范围以告诉我们peculiar issues when developing large scale applications您所确定的身份?由于您具有.net背景作为操作人员,因此了解.net人们对php特有的看法会有所帮助。
yannis,2011年

好的,Yannis,对我来说,一个问题是PHP如何不是严格地面向对象的,它具有过程形式和面向对象形式的各种功能,并且习惯于某种形式的语言不仅需要一段时间,而且还需要习惯于分成几类,但所有这些名称空间和所有内容都放入其中。
tsega

嗯,这是一个普遍的问题,而不仅仅是when developing large scale applications。无论如何,我在思考更多的概念和方法问题,例如PHP在扩展问题上采用了与.Net完全不同的方法。我对.Net的经验很少,所以我很想了解.Net人们在使用PHP时在概念上会发现什么。但是,当然可以预料到PHP是多范式这一事实。
yannis 2011年

1
就方法而言,大多数ASP.NET开发人员倾向于使用自定义控件(组件-由HTML控件与Javascript和服务器端代码组合而成)来开发其“大规模”(数据密集型)应用程序。这主要是由于大多数ASP.NET开发人员实际上已经使用几乎相同的工具从桌面应用程序开发转向了Web开发。因此,大多数人都在寻找方法来转换其已经掌握的与自定义控件一起使用以适应Web开发的技能。
tsega 2011年

本书附带的一个非常好的IDE是Netbeans。PHP调试就可以了。
tsega 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.