重新学习 PHP,它有啥变化?

Posted

技术标签:

【中文标题】重新学习 PHP,它有啥变化?【英文标题】:relearning PHP, how has it changed?重新学习 PHP,它有什么变化? 【发布时间】:2011-05-07 19:04:14 【问题描述】:

我正计划使用 php 创建一个小型 Web 应用程序。我最后一次使用 PHP 是在 2002/2003 年左右,当时的代码往往是 PHP/htmljavascript 的可怕混搭,它们被塞在一个文件中。我想我什至可能一直在使用 PHP3...

我现在想重新学习并想知道发生了什么变化,以及存在哪些帮助库和 takelits,这可能使我免于在不知不觉中重新发明事物。

例如,是否有一个“标准”mysql 库,或者我们是否仍然使用基本的 PHP 函数(作为一个附带问题,存储过程在 MySQL 中工作了吗?)?为了制作一个不依赖整个页面 HTML 表单帖子将数据发送回服务器等的“现代”网站,我需要知道什么。

【问题讨论】:

我建议看看 php5 的一些 OOP 改进,也许看看一些更新的框架(如 zend 框架) 编程语言在进化,而不是改变。开发变革的方法(例如:用于 Web 应用的 MVC)。 【参考方案1】:

欢迎回来。 PHP 变得更好了!

如果可以,从一开始就使用 5.3;请注意,尽管许多网络主机还不支持它(如果这是一个问题)。如果遇到 PHP 4,尖叫着跑开:它不再适合生产使用。

主要的发展是 PHP 5 中的 finally proper OOP。在我看来,熟悉它是唯一真正必须做的事情。

Several popular frameworks 已经进化,可以为您完成许多低级工作。 Zend Framework 是一个非常高质量的代码库,我个人最喜欢使用它,因为它也可用作组件库,不会将其设计原则强加于您;还有其他人。 (Here 是一个比较网站)。

PDO绝对是低级数据库类de jour。它具有防止SQL注入的参数化查询并支持a number of databases。

MVC design pattern 是一种非常流行的设计模式,用于构建动态网站和应用程序,并作为一种设计理念嵌入到大多数 PHP 框架中。

Class Autoloading 是一个很棒的 PHP 5 新特性。

Standard PHP Library 是一个相对鲜为人知的新开发,它为日常 PHP 问题带来了简洁的 OOP 解决方案。例如DirectoryIterator,它允许轻松地递归遍历目录; ArrayObject 为许多(但不是全部)核心数组函数提供了 OOP 接口。

DateTime class 将随着时间的推移替换旧的 UNIX 时间戳。它提供了改进的功能,并且可以处理 32 位时间戳 1970-2038 范围之外的日期。

这是引擎盖下的一些东西。您至少需要了解一些重要的客户端开发;即Ajax 获取服务器端数据而不重新加载页面,并使用像jQuery 这样的JavaScript 框架来处理细节。您已经熟悉的 CSS。

【讨论】:

【参考方案2】:

以下是解决方案:

    使用ORM 从 SQL 中抽象出来 >> 例如,是否有“标准”MySQL 库,或者我们仍然使用基本的 PHP 函数

    使用MVC 框架>> 辅助库和takelits 存在

    使用 Javascript 获得更好的用户体验 JS Frameworks >> 打造“现代”网站

【讨论】:

【参考方案3】:

开始时迁移到 Zend 框架,首先对 OOP 做一些很好的研究。确保您很好地理解了多态和继承等术语。您必须学习的最后一件事是 php 模式,如单调模式和工厂模式、抽象类和接口实现。

【讨论】:

“你必须学习的最后一件事是 php 模式,如单调模式和工厂模式” - PHP 模式!?认真的!? 这里可能存在语言问题。当一个以英语为母语的人说“你必须做的最后一件事是……”时,这个成语通常意味着“不要这样做!”,但我认为这不是 Max 的本意。我不明白 jondro 的评论,所以我不确定,但我认为他们可能对 Max 的声明采取了另一种方式。 我不确定 lol 的全部内容 :) 只是一些学习技巧。 我想我不够清楚。单例和工厂是适用于所有面向对象语言的设计模式。它们不是 php 模式。 没错,你可以在任何语言上使用这些技术,并且 php 支持这些技术。

以上是关于重新学习 PHP,它有啥变化?的主要内容,如果未能解决你的问题,请参考以下文章

当下拉列表的值发生变化时,如何重新渲染 Flatlist?

如何用JS使图片重新加载

saveUninitialized 和重新保存有啥区别?

PHP & Sessions:有啥方法可以禁用 PHP 会话锁定?

Xcode:有啥方法可以刷新/重新运行游乐场?

NSArrayController 的自动准备内容和自动重新排列对象有啥用?