您知道哪些特定于 PHP 的反模式?

发布于 2024-07-18 05:54:30 字数 1431 浏览 8 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

痴情 2024-07-25 05:54:30

我不同意这一点:

  • 不要盲目地将 PHP 嵌入 HTML - 使用模板/MVC。

PHP 是一种模板语言。 虽然我同意实现 MVC 的概念,但我不明白为什么需要围绕生成 Web 输出实现另一个 DSL。

I disagree with this one:

  • Don't blindly embed PHP into HTML - use templating/MVC.

PHP is a templating language. While I agree with the concept of implementing MVC, I don't see why there should be a requirement to implement a yet another DSL around producing web output.

佼人 2024-07-25 05:54:30

添加结束符“?>” 将标签添加到 php 文件末尾可能会导致意外地将空格推入输出缓冲区。 PHP 解释器会自动向文件添加结束标签,而手动执行此操作在某种程度上是一种反模式。

Adding closing "?>" tags to the end of php files can lead to accidentally pushing white-spaces to the output buffer. The PHP interpreter will automatically add closing tags to files, and doing it manually is somewhat of an anti-pattern.

2024-07-25 05:54:30
  1. 在没有检查和清理的情况下,切勿使用 $_GET$_POST
  2. 了解如何设置 php.ini 权限。
  3. 切勿将变量放入原始 SQL 中。
  4. 如果您使用框架,请使用依赖项较少的框架。
  5. 停止过度概括。
  6. 将您的代码分发到 php 文件中。 在大多数情况下,没有真正需要将所有内容放入一个 index.php 中。
  7. 在编写代码之前降低复杂性。
  8. 尊重它是一个网络应用程序这一事实。 (尝试RESTful。)它不是桌面应用程序。 因此,请停止将所有内容放入 $_SESSION 中。
  9. 每 10 行代码至少有 1 行注释。 一年后你会读到它。 我保证!
  10. 代码像个女孩 - 让它读起来很愉快。
  1. Never EVER use a $_GET or $_POST without checking it and cleaning it up.
  2. Read about how to set up the php.ini right.
  3. Never put variables into raw SQL.
  4. If you use frameworks, use the ones with less dependencies.
  5. Stop over-generalization.
  6. Distribute your code on the php files. In most cases there is no real need to put everything into one index.php.
  7. Reduce complexity before writing code.
  8. Respect the fact that it is a web application. (Try to be RESTful.) It's not a desktop application. So stop putting everything into $_SESSION.
  9. At least one comment line for every 10 lines of code. You WILL read that after a year. I promise!
  10. Code like a girl - make it nice to read.
鹿! 2024-07-25 05:54:30

我目前最讨厌的是查询函数的返回类型不一致。 这是当您调用函数来执行查询时,

  1. 如果未找到匹配项,它会返回 NULL 或 FALSE 或类似的内容 找到
  2. 单个匹配项时的匹配对象/值 找到
  3. 多个匹配项时,匹配对象/值的数组

这迫使您检查返回类型并具体处理每种情况。 最好总是返回一个包含 0、1 或 n 个元素的数组。

My current pet peeve is inconsistent-return-type for query-functions. This is when you call a function to execute a query, and it returns

  1. NULL or FALSE or something similar when no match is found
  2. The matching object/value when a single match is found
  3. array of matching objects/values when more than one match was found

which forces you to check the return types and deal with each case specifically. It would be much better to simply always return an array with 0, 1 or n elements.

泛滥成性 2024-07-25 05:54:30

我最喜欢的“不要”之一是:

$query = 'select * from users where username = ' . $_POST['username'];

它还能变得比这更可怕吗?

One of my favourite DON'Ts would have to be:

$query = 'select * from users where username = ' . $_POST['username'];

Can it get much scarier than that?

迷雾森÷林ヴ 2024-07-25 05:54:30

如果我必须列出最喜欢的一个,那一定是 karim79 发布的那个:

$query = 'select * from users where username = ' . $_POST['username'];

许多 PHP 开发人员一直停留在结构化时代。 PHP 从前一段时间就支持类和对象,我只是不明白为什么人们不断将 PHP 硬编码为 html,没有模板或什么都没有。

我相信,如果有这么多开发人员继续这样编程,那么来自其他语言(例如 .NET 或 Java)的开发人员就赢得了批评该语言的权利。 PHP 是一门非常伟大的语言,非常灵活,仍然有点初级,但正在成长,但许多人就是不明白它,他们想要的只是通过制作旧的经典副本和 PHP 来解决。 粘贴。

If I had to include a favourite don't it has to be the one posted by karim79:

$query = 'select * from users where username = ' . $_POST['username'];

Many developers in PHP keep stuck in structured age. PHP supports classes and objects since a while ago, I just don't get why people keep hard coding PHP into html, without templates or nothing at all.

I believe that developers from other languages, like .NET or Java have earned the right to criticize the language if so many developers keep programming like that. PHP is a very great language, very flexible, still a little junior but is growing, but many just don't get it, all they want is to solve by making the old classic copy & paste.

‘画卷フ 2024-07-25 05:54:30
  • 使用 SPL
  • 使用 PDO 而不是使用 mysql_query 或 pg_query 或其他
  • 始终在用户输入上使用过滤器扩展
  • use SPL
  • use PDO instead of using mysql_query or pg_query or others
  • always use the filter extension on user input
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文