有经验的Asp.net程序员在跳入PHP时应该知道什么?

有经验的Asp.net程序员在跳入PHP时应该知道什么?,php,asp.net,windows,lamp,Php,Asp.net,Windows,Lamp,我认为自己是一个经验丰富的asp.net/c程序员。我喜欢asp.net面向对象的优点。我喜欢它的类型化变量。我喜欢在VisualStudio工作 然而,今天下午,我被一个使用php/mysql编写web应用程序的愿望狠狠地揍了一顿 我想知道,S.O.作为一个自信的Asp.net程序员,我需要了解哪些PHP(我想是整个lamp系统)的基础知识来简化学习过程 你能做比较或类比吗?像我这样的小把戏会上当吗?等等 有一件事我不想找的是一个有争议或偏见的比较。天知道网络上已经有足够多的软件了。更多的问题

我认为自己是一个经验丰富的asp.net/c程序员。我喜欢asp.net面向对象的优点。我喜欢它的类型化变量。我喜欢在VisualStudio工作

然而,今天下午,我被一个使用php/mysql编写web应用程序的愿望狠狠地揍了一顿

我想知道,S.O.作为一个自信的Asp.net程序员,我需要了解哪些PHP(我想是整个lamp系统)的基础知识来简化学习过程

你能做比较或类比吗?像我这样的小把戏会上当吗?等等


有一件事我不想找的是一个有争议或偏见的比较。天知道网络上已经有足够多的软件了。

更多的问题来自PHP->.NET/C#因为PHP提供了太多的灵活性,这就是为什么每个人似乎都擅长用PHP编程,但相信我,我在生活中看到的软件怪兽80%都是用PHP编写的。来自70%PHP-30%Java开发人员的建议:遵守标准,一切都会好起来的。PHP可以用它的灵活性欺骗您:松散类型、内置模板引擎、基本上是关联数组的对象、奇数错误处理、可以轻松作为类、变量和函数名处理的字符串

如果我可以做一个比较:Java=军事独裁(这就是为什么Java是我最喜欢的编程语言)PHP=嬉皮乐园(我尽我所能成为一个标准的技术暴君),那里没有法律,你必须依靠“常识”,如果你缺乏“常识”。。。嗯,这会导致混乱

要查看一个小的比较,我建议您查看eFront电子学习平台的源代码(它是一个开放源代码的电子学习解决方案,具有出色的业务需求覆盖率和可怕的编码)

要了解相反的情况,请查看Joomla或Magento的资料来源。(他们在他们的领域也有很大的业务覆盖范围)


如果你使用PHP,一定要保持乐观的一面。

是你的朋友,在学习函数时阅读注释,从中吸取了很多经验教训。

从语言角度看,PHP是松散类型的。这是非常重要的,并且可以产生很大的不同。但是只要你小心使用它,并且在适当的时候使用
==
而不是
=
,它就不会绊倒你。(在许多情况下,它实际上可以让事情变得更容易)

但是,您将注意到的真正大的区别是,您没有可以使用的.NET框架。它提供的所有有用的方法;走了

取而代之的是,至少在一个普通的PHP安装中,有大量名称不一致的函数和类库

是学习所有这些功能的极好资源—可能是web上最全面、最有用的手册之一。它使PHP变得非常容易访问,在大多数情况下,您应该能够找到所需的函数

<>但是如果你真的想要一个体面的框架库,你应该认真考虑一个众所周知的PHP框架,并在学习PHP的同时安装和学习。我建议你看看Symphony或CakePHP,但还有一些其他的也值得研究。无论您选择哪一种,如果您习惯了MVC开发模式,这些框架将使您更容易地了解PHP


希望对您有所帮助。

如果您正在从ASP.NET WebForms迁移(我假设您是这样)您需要意识到的最大的一点是.NET为web开发提供的过多类在PHP中是不存在的——这没什么错:PHP为您提供了更大的控制,让您的web应用朝着您想要的方向发展

简而言之,ASP.NET是开发web应用程序的成熟框架,PHP只是一种编程语言。然而,与.NET一样,也有一些框架可以帮助您构建web应用程序

你需要记住的最重要的事情是:

  • 没有代码隐藏页面。PHP不支持分部类,因此不能使用此功能。有些框架,比如Prado,在模仿这一点上做得非常出色
  • 没有视图状态。您需要手动处理GET和POST数据
  • 没有控制。如果您还不熟悉它,那么您肯定需要很好地掌握如何编写自己的HTML并将数据推送到它们
  • 文件管理-您需要使用include或require手动加载文件。由于PHP不是一个编译过的应用程序,您需要手动包含您想要使用的每个文件

  • 我最感兴趣的可能是PHP是松散类型的。。。作为一名PHP程序员,我总是努力保持乐观的一面。也就是说,我的一些旧代码令人震惊,在任何语言中都有好的和坏的编程示例。然而,如果您从PHP5问世以来就一直使用对象,那么PHP中的对象就不是“基本上关联的数组”。大多数更大的PHP项目仍然支持到5月初或4月底的向后兼容性,这就是为什么存在一些难看的代码的原因。较新的框架展示了一些真正的面向对象的能力。当我可以使用$this->sample=“something”这样的东西时,当我从未将$sample变量声明为类的成员时,这是很奇怪的。