我真的很喜欢PHP,因为:
_易于开发Web应用程序(您可以在10分钟内设置LAMP并准备好了)
_易于学习
_易于部署(您只需要使用带有PHP模块的Apache)
我真的很喜欢Java,因为:
_它是强类型的
使用Java和Netbeans进行开发令我感到惊讶.任何时候出现类型不匹配的问题,IDE在开发过程中都会收到警报,并且IDE本身就建议修复.
我认为强打字是一种幸福.这是真的:可以包含任何内容的PHP数组可以加速您的开发,但是您必须花时间查找错误,而在提前做更多工作时,您可以使用IDE为您指出问题.这让我在重构过程中也更有信心.
所以,我的问题是:是否可以在PHP中使用类型(包括方法的返回值)?你知道一个项目,一个分支,什么能让我这样做?
它可能只是一个预解析器,它在实际的PHP解析器之前检查一些注释(即public function /*ConfBuilders[]*/ getConfBuilders(/*int*/ confId)).
请介绍类型概念的任何内容,因此,在我看来,会使PHP应用程序更加健壮,并最终更快地实现(现在我认为用Java开发软件比用PHP开发软件更快,这要归功于IDE的帮助).
谢谢,
丹
编辑:这是我在网上找到的唯一的东西:
http://cstruter.com/blog/44
但我不喜欢它,主要是因为你不能以标准的方式声明对象属性并且肯定使脚本的执行更慢.我想要一个离线工作的方法,同时开发......一种编译.
找另一种语言.
弱打字和JiT编译是PHP PHP的一部分.如果您觉得PHP的特性违背了您的编码理念,那么无论如何都不要使用它.
还有其他语言,如Ruby,它是强类型的,但是像PHP一样编译.
有几种方法可以使您的代码更加严格.
在方法中使用类型提示来限制参数类型.这仅适用于类,接口和数组.见例子:
class Foo { }
class Bar {
function quux(Foo $f) { }
}
Run Code Online (Sandbox Code Playgroud)我尽可能多地使用类型提示来避免愚蠢的错误,例如传递null或原始值,而对象是期望的.遗憾的是,返回值不是强类型的.
使用访问预选赛:public,protected,private.虽然公共成员可以由外部实体访问,但受保护和私有只能通过相同(基础)类的实例访问.还要考虑使用abstract和final限定符.
针对接口而不是类的代码,积极地使用组合和聚合.习惯使用依赖注入.适当时使用众所周知的设计模式.
熟悉反射和面向方面编程的元素.虽然在AoP领域提供的PHP很少,但它的反射子系统非常好.您可以在doc-block注释中使用@annotations来利用元编程.我经常使用它来注释具有单元测试位置的类.我还有一个ACL的实现,其中控制器方法注释(长话短说)必需的访问级别:
/**
* @AclActivity('view-services')
* @AclActivity('edit-services')
*/
public function editServiceAction() { ... }
Run Code Online (Sandbox Code Playgroud)最后,不要局限于PHP.阅读其他语言,不仅是主流语言,还有模糊不清的语言 - 这些都充满了精彩的想法.查看Lisp,Erlang,Rebol.查找现有语言的不寻常应用程序,例如服务器端JavaScript编程.写自己的语言.是的,它会很糟糕,但你会学到很多东西.