如何在不使用框架的情况下编写好的PHP代码?

时间:2008-10-11 20:30:08

标签: php

除了标准的OO概念之外,还有哪些其他策略可以在不使用框架时生成良好,干净的PHP代码?

10 个答案:

答案 0 :(得分:25)

请记住:MVC,OOP和层是设计概念,不是语言结构,也不是文件结构。

对我而言,这意味着当不使用框架时,以及没有不同的团队进行编程和设计时;在PHP(这是一种模板语言)之上使用另一个模板系统没有任何价值。此外,将代码与布局分离并不一定意味着在不同的文件上进行。

这就是我以前用于一次性,很少扩展的PHP网络应用程序的方式:

  1. 写一个'通用实用程序'文件,在那里我放了一些格式化/消毒功能,以及一些数据库访问功能:
    1. getquery():给定一个SQL,返回一个结果对象
      • getrecord():给定一个SQL,返回一个记录对象(并关闭查询)
      • getdatum():给定一个SQL,返回一个字段(并关闭查询)
      • 将所有配置(数据库访问,一些URL前缀等)放在'config.php'文件中
      • 为您存储在DB上的每个对象写一个模型层,一个文件或一个文件。在那里,将是所有SQL常量,根据您的概念对象呈现更高级别的API,而不是基于数据库记录。
  2. 那是你的'框架',然后你写''presentation'层:

    1. 每个页面的一个PHP文件,从一些简单代码开始,以获取所需的对象,然后是带有插入的PHP代码的HTML,只是为了“填补漏洞”。除了极少数例外,最复杂的代码应该是循环。我制定规则只使用单行,?>应与开头<?php

      位于同一行
      • 每个数据输入表单应指向一个没有任何HTML的小PHP,只需获取POST数据,进入数据库,然后转发到调用页面。
    2. 就是这样。如果单独工作,它会将您需要的所有意图分开,而不会淹没在用于单个用户操作的大量文件中。用户看到的每个页面都由一个PHP文件管理。

      在几个月没有查看代码之后,它甚至很容易维护,因为它很容易测试应用程序,注意浏览器URL字段中的文件名。这将直接指导您使用相关代码。

      (现在,当然,我几乎都在使用Django ......)

答案 1 :(得分:12)

我说的几乎和其他语言一样:

  • 不要过早优化
  • 保持方法小
  • 练习DRY
  • 练习数据驱动编程
  • 使用合理的快捷方式(例如三元运算符)
  • 将您的代码格式化,以便其他人能够理解
  • 不要盲目使用OO
  • 始终检查错误的返回代码
  • 启用最高警告级别并确保代码不会产生任何警告
  • 在键入问题时要非常小心(这适用于所有弱类型语言)。 '==='运算符是你的朋友。

答案 2 :(得分:12)

如果你发现自己混合HTML和代码,只需停止。你很好... You're doing it wrong! http://dennisjudd.com/albums/cute_cats/wrong_mike.jpg

答案 3 :(得分:9)

实际上这个问题与语言无关,因为它适用于您选择“自己动手”的大多数语言。我要提出的两个建议是:

首先,仅仅因为你没有使用框架并不意味着你不能采用分离代码的模式。 MVC模式是您在安排源代码时应该考虑的最小值 - 它使得源代码集合更加清晰和易于维护,即使应用程序不完全遵循与框架相关的路由进程,代码“ “事物与”代表“事物是非常有益的。”

其次,仅仅因为你选择不使用完整的框架,并不意味着你需要重新发明轮子。合理利用预先打包的库以解决特定问题。两个很好的例子是日志框架(log4php)和前端渲染/模板解决方案(Smarty)。

答案 4 :(得分:5)

尽可能远离全局:-D

答案 5 :(得分:5)

如果您真的遵循OO概念,例如关注点分离,您的代码会非常好,但这里有一些建议:

  • 框架与否,使用MVC。
  • 我不能强调永远不要将你的逻辑与HTML混合是多么重要。在HTML文件中,PHP应该仅用作模板语言,仅此而已。
  • 使用DBAL。
  • 将您的设计与您的内容分开。执行此操作的常用方法是大量使用CSS并使用包含大量站点布局的页眉和页脚文件。
  • 为选项常量提供单个文件,如数据库凭据,FTP凭据等。

答案 6 :(得分:2)

确保遵循关注点分离的标准做法。这意味着尽量不要将业务和数据层与您的UI混合在一起。

答案 7 :(得分:1)

即使您不使用框架,也请使用模板引擎。通过使用模板,您将分离应用程序的逻辑和表示。然后设计,编码和格式化逻辑部分,就像使用任何其他语言一样。让“设计师”设计用户界面:)

答案 8 :(得分:1)

OO并不是绝对必要的:可以用PHP编写好的代码&lt; 5也是。良好的程序代码,通过“逻辑距离”很好地分隔成文件和目录也应该保证您的安全。但请注意,这是如何从远处开始类似于OO的。

最好的事情是保持一致:我已经看到一个项目,Smarty在大多数页面中使用,除了一个 - 最复杂的,去图 - 。

答案 9 :(得分:1)

利用PHP的内置扩展 - 例如MySQLi。随着这些变得更加面向对象,对框架的要求变得越来越少。

例如,我可以使用以下扩展创建一个有用的TwitterApp,除了核心类之外没有实际框架将实例绑定在一起。

  • 用于数据库的MySQLi(如果需要DAL,则为PDO)
  • 用于RSS / API阅读的SimpleXML
  • Smarty for templating

我可能需要为Login之类的东西制作一些帮助类,但是我通常的一对类(DAL和TPL)已被两个非常好用的扩展程序淘汰了。