在PHP上运行现代启动

在现代敏捷初创公司和硅谷的世界中,嗡嗡声是关于Ruby,Python,以及最新的酷炫编程语言或框架出来的是。旧技术不’T得到了很多爱,博士尤其是糟糕的声誉。在这篇文章中,我’M将覆盖为什么以及我们如何使用PHP作为现代技术,以及我们所用的各种其他工具,技术和开发方法,我们雇用令人着迷而优雅地运行。

PHP.

PHP.被视为一个笨拙和业余的技术,最好的左转发展新手和5美元的顾问。它’当我告诉我们在PHP上运行时,几乎不够糟糕,让我感到羞耻。但是,我不’认为这种声誉完全应得。

在Perl之后,语言本身就是最古老的语言作为Web技术所采用的语言。它的根源作为文本预处理器,在过去的16年中,它已经从中发展到更广泛的东西。其中许多故障源于它的演变之路,而不是以今天从头到上的方式设计。

I’不应该争辩PHP是最好的语言 - 它显然是不是’t. Frankly, it’s a mess. There’函数和类名没有一致性,即使在核心库本身内也是如此。面向对象的功能在稍后的一点上粘在一起’越好,有点脆弱。在ChartBoost的情况下,核心要求是我们在至少PHP 5.3上运行,引入了晚期静态绑定。在此之前,在PHP中构建严重的面向对象的代码是不可能的。

即使对于所有故障而言,PHP仍然是一个主要的参与者,以及一些最令人印象深刻的技术公司(如Facebook)正在使用它。 PHP仍然是与代码,部署和执行的最快语言之一。最后,虽然这主要是由于个人偏好,但我发现其C-Inspired语法成为Web开发世界中最好的。括号,括号和分号使得代码在做什么,而不是Ruby’S的符号混乱,隐含括号和缺乏声明结尾。

MVC

It’对于现代Web应用程序来运行MVC(模型 - 视图 - 控制器)架构。不幸的是,PHP在现代和敏捷的MVC框架方面提供了很少。大的(码天度计,交响乐等)非常臃肿,实际上往往妨碍您的方式。此外,大多数都强加了他们对模型的内容的愿景&数据库图层应该是如此。

滑翔伞

幸运的是,一个框架从包装中脱颖而出。 滑翔伞 是一个简约的框架,用于处理控制器,渲染视图,甚至其他框架。它在建立环境方面提供基础知识,提供基本助手并组织代码。它还适用于命令行和shell(稍后更多。)

当我这么说的时候相信我,但在令人沮丧的情况下滑翔伞。它使PHP编码为优雅,并且在某种程度上更优雅,而不是在轨道中的等效物。它’s比铁路更快,更轻,但很容易可扩展,并与您抛出其方式的任何其他代码或包装。

MongoDB.

我们设计理想的另一个决定核心是选择 MongoDB. 作为我们的主要模型层。 Mongo是一个令人难以置信的强大且可扩展的数据库系统。它’从根本上与MySQL不同,因为它是核心价值商店。 Mongo非常有效地有效,我们实际上完全跳过了通常需要使用Memcached的步骤。 Mongo还提供比MySQL更高的可靠性和安全性,具有功能防范副本集等功能,以及查询界面’S无懈可击的注射攻击。完全避免SQL也非常愉快。蒙哥大之一’最大的优点是通过副本集简单而强大的缩放。当节点下降或添加时,Mongo将自动识别它并自身重新平衡,而不会导致任何停机时间。没有单点失败。

Mongomodel.

我的宠物项目已经过了 Mongomodel.,这是我们用作我们的architecutre的第三站。 Mongomodel是一个使用Mongo作为其数据存储的ORM,并为全功能的Web应用程序添加了重要性。它提供对象映射,关系,验证,非常优雅使用。就像轨道一样’致力于推导出来的默认违约,它’S模式无关。您不需要设置甚至定义数据库的样子。相反,你只使用物体,Mongomodel照顾其他一切。

单元测试

虽然我们不’T实践试验驱动开发,我们确实有单位测试到位。 PHP不提供优雅的测试库,所以我们自己建造了我们自己的(很快开放。)

壳牌开发& Scripting

滑翔伞是我的知识,唯一用于命令行脚本和交互式shell的唯一php框架。脚本功能对于运行Cron脚本和各种其他维护和管理任务来说非常重要。交互式shell访问是一个福音,用于快速开发和调试。我们用 php-shell. 直接从命令行与我们的代码进行交互。这与rails非常相似’ script/console.

Git.

我们所做的一切都存储在Git中。 Git.’S的美德在社区内是众所周知的,所以我只会说Git在跟踪我们的代码,历史和协作方面非常有用。我们甚至使用Git作为Wiki,以跟踪我们的文档和各种其他内部文档。

Git.Hub.

我们所有的Git存储库都托管 Git.Hub.。除了托管和华丽的用户界面之外,这的主要价值是使用社交功能来跟踪谁’一直在做什么。 GitHub使得它真的很容易概述什么’发生了。它还管理用户帐户和权限。

Capistrano.

我们的主要服务器端代码在Git存储库中生存。我们有专用的生产代码分支。我们用 Capistrano. 用于部署。 Git存储库具有专用的生产代码分支,我们将其合并为我们部署的东西。脚本将自动运行单元测试,这些测试将其推动到生产。

亚马逊网络服务

绘图船上依赖于亚马逊Web服务’许多产品,包括 EC2 对于云服务器, S3 用于数据存储, SES. 用于电子邮件和各种其他较小的服务。这让我们支付我们使用的程度,并且允许简单快速地缩放。我们有一个准备好部署到新节点的图像,因此我们可以处理在我们的应用程序中抛出的任何流量。

通讯& Internal Tools

最后但并非最不重要的是那里’我们在内部使用的工具以保持同步。 灯塔 照顾我们的错误跟踪需求,而其伴侣, 投标 处理支持。我们用 营火 对于团体聊天,瞄准一对一。谷歌应用程序&Gmail照顾我们的电子邮件。还要查看伴侣Mac应用程序 灯塔守门员 对于灯塔,和 丙烷 for Campfire.

如果您读到这一点,您现在始终概述我们用于代码的各种工具和技术 绘图船上。即使我们选择了一个不受欢迎的语言来基础我们的技术,我认为它已经帮助我们了。通过这篇文章,我希望能够再次传播PHP和这些各种方式在现代环境中使用它。

发表评论