如果你使用一面大镜子作为冲浪板会发生什么?或许你会在较短的时间内征服海浪,但是你肯定从内心深处明 白,这不是冲浪的正确选择。同样的道理也适用于PHP编程,尽管这样的类比听起来有一些古怪。我们经常听到有人试图用一个周末多点的时间来学会PHP,但 是请恕我直言,这是学习这门编程语言的一种非常糟糕的方式。

  为何说学习PHP的过程有别于任何其它语言?

  就其本质而言,如果你掌握了以PHP语言“做事”的方式,那么在使用它时就会得心应手,因此值得你去投入精力去了解这些方式。在PHP中,单纯 按照自己思路去解决问题往往会是一种错误的办法。这并不是因为你是一个糟糕的程序员,而是因为如果你想写出好的可维护性强的代码,有些标准技巧是你必须要 使用的。下面让我们一起看一下你需要知道的10大技巧。

1、如何正确的创建一个网站的Index页面

  创建每一个网站时,建立网站的index页面是首要做的事情之一。如果你是一个PHP新手,在编写index页面时典型的做法是只对index 页面所需的内容进行编程,其它链接创建另一个页面。不过,如果想学习一种更高效的方式来实现PHP编程,可以采用 “index.php?page=home”模式,许多网站都在采用这种模式。

2、使用Request Global Array抓取数据

  实际上我们没有任何理由使用$_GET和$_POST数组来抓取数值。$_REQUEST这个全局数组能够让你获取一个get或form请求。 因此,多数情况下解析数据的更高效代码大体如下:

$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 0; 

3、利用var_dump进行PHP代码调试

  如果你在寻找php调试技术,我必须说var_dump应该是你要找的目标。在显示php信息方面这个命令可以满足你的所有需要。而调试代码的 多数情况与得到PHP中的数值有关。

4、PHP处理代码逻辑,Smarty处理展现层

  Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种 易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的 逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

5、的确需要使用全局数值时,创建一个Config文件

  动辄创建全局数值是一种糟糕的做法,不过有时候实际情况的确又需要这么做。对于数据库表或数据库连接信息使用全局数值是一个不错的想法,但不要 在你的PHP代码中频繁使用全局数值。另外,更好的一种做法是把你的全局变量存放在一个config.php文件中。

6、如果未定义,禁止访问!

  如果你正确的创建了页面,那么任何其他人没有理由访问index.php或home.php之外的index.php页面。一旦 index.php被访问后,你可以通过获得变量的方式来打开需要的页面。你的index页面应该包含类似的以下代码:

<?php define('yourPage',1); ?>

然后,其它页面应该包含:

<?php if (!defined('yourPage')) die('Access Denied'); ?>

这么做的目的是防止直接访问你的其它php页面。这样,任何试图不通过index.php访问其它网页的人,将得到“访问被拒绝”的消息。

7、创建一个数据库类

  如果你正在进行数据库编程(在PHP中非常常见的任务),一个不错的想法是创建一个数据库类来处理任何数据库管理功能。示例代码如下:

public function dbExec($query)
{    $result = $this->db->exec($query);    if (PEAR::isError($result))    errorRedirect($result->getMessage(), true);    else   return $result;
} 

这个函数仅接收一个查询语句并对其执行。它还处理可能出现的任何错误。你还可以在这儿包含审核代码,不过我更喜欢使用一个类似的审核函数:

// checks if arguments given are integer values not less than 0 - has multiple arguments    function sanitizeInput()
{    $numargs = func_num_args();    $arg_list = func_get_args();    for ($i = 0; $i < $numargs; $i++) {    if (!is_numeric($arg_list[$i]) || $arg_list[$i] < 0)    errorRedirect("Unexpected variable value", true);    }
} 

8、一个php文件处理输入,一个class.php文件处理具体功能

  不让代码变得混乱的一个重要方法是:获取用户输入后,将其重定向到其它函数来进行处理。原理非常简单,php文件获得我们需要的任何输入,然后 将其执行重定向到类文件中的一个函数。举例来讲,假设有一个类似“index.php?page=profile& action=display”的URL。由profile.php来检索该网址并得到操作是“display”。然后使用一个简单的switch函数, 我们来执行真正的显示函数:

require_once PROJECTROOT.'libs/messages.class.php';
$message = new Message();
switch ($action)
{   case 'display':   $message->display();   break;
... 

如上所示,我使用了一个消息类,然后开始进行switch检查。$message只是被类中的调用函数使用的一个对象。

9、了解你的SQL语句,并总是对其审查(Sanitize)

  正如我以前所提到的,任何php网站中最重要的部分有99%的可能是数据库。因此,你需要非常熟悉如何正确的使用sql。学会关联表和更多高级 技术。下面我将展示一个使用MySQL的函数示例,并使用本文第7条函数进行审查。

private function getSentMessages($id)
{    $this->util->sanitizeInput($id);    $pm_table = $GLOBALS['config']['privateMsg'];    $users = $GLOBALS['config']['users'];    $sql = "SELECT PM.*, USR.username as name_sender FROM $pm_table PM, $users USR WHERE id_sender = '$id' AND sender_purge = FALSE AND USR.id = PM.id_receiver AND is_read = TRUE ORDER BY date_sent DESC";    $result = $this->dbQueryAll($sql);    return $result;
} 

首先,我们对用户输入进行检查(通过一个GET变量传递消息id),然后我们执行我们的SQL命令。注意这儿SQL的用法。你需要了解如何使用 别名和关联表。

10、当你只需要一个对象时,使用单例模式

  在PHP中相当常见的一种情形时,我们只需要创建一个对象一次,然后在我们的整个程序中使用它。一个很好的例子就是smarty变量,一旦被初 始化后就可以在任何地方使用。这种情形的一个很好实现方案就是单例模式。示例代码如下:

function smartyObject()
{    if ($GLOBALS['config']['SmartyObj'] == 0)    {    $smarty = new SmartyGame();    $GLOBALS['config']['SmartyObj'] = $smarty;    }    else   $smarty = $GLOBALS['config']['SmartyObj'];    return $smarty;
}  

注意,我们拥有一个全局smarty变量(该示例中它在config.php中被初始化),如果它的值为0,我们将创建一个新smarty对 象。否则,它意味着该对象已经被创建,我们只需要返回它。

让PHP开发者事半功倍的十大技巧相关推荐

  1. 苹果12开发者设置_苹果12怎么省电?iPhone12系列省电设置十大技巧介绍

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.注图文来源网络,侵删 大家 ...

  2. 苹果12开发者设置_苹果12怎么省电?iPhone12系列省电设置十大技巧介绍_苹果知识...

    大家都知道,今年iPhone12的性能相比上一代11更强,但是电池配置却变小了,这让很多果粉甚是纠结,在续航不佳的前提下,我们只有通过一些省电设置,才能让iPhone12系列有更好的续航能力.接下来, ...

  3. 创建一个Flash站点的十大技巧

    根据Macromedia 顶级Flash设计者,开发者以及可用性专家的建议,我们收集了创建一个具备可用性的Macromedia Flash站点的十大技巧. 1.记住用户的目标 用户往往带着目的访问一个 ...

  4. jQuery Mobile高手必备的十大技巧和代码片段

    本文转自51ito布加迪编译版本: http://mobile.51cto.com/hot-276160.htm 其中未发现英文原作链接,为尊重版权,google之后附上: http://www.we ...

  5. Spark+Alluxio性能调优十大技巧

    戳蓝字"CSDN云计算"关注我们哦! 由于统一访问对象存储(如S3)和HDFS数据的场景的出现和普及,Apache Spark结合Alluxio的大数据栈越来越受欢迎.此外,越来越 ...

  6. 谷歌浏览器设置请求头_2020年 谷歌SEO优化 十大技巧(四)

    本篇是2020年谷歌SEO优化十大技巧的第4篇文章,在前面的三篇文章中 2020年 谷歌SEO 优化十大技巧(一) --- Jack外贸建站 谷歌SEO 优化教程 主要讲的是页面的标题和关键词的优化研 ...

  7. 跟柴静的《穹顶之下》学习演讲的十大技巧

    跟柴静的<穹顶之下>学习演讲的十大技巧 柴静是如何用一次演讲感召了全国三亿人!她的演讲中又有哪些秘密呢?今天就跟小编一起来看!免费关注微信公众号 jiarenorg ,就能天天收到佳人精彩 ...

  8. 短线王的盯盘宝怎么样_短线王炒股十大技巧!

    原标题:短线王炒股十大技巧! 散户的资金量特别少,所以散户们喜欢炒短线,但是炒短线的散户经常赔钱,不过看了下面十大技巧,散户再也不怕短线炒股赔钱了. 一.追涨杀跌有时用处很大.强者恒强,弱者恒弱.炒股 ...

  9. 给大家盘点一下最新版本的Photoshop十大技巧和黑科技

    自Photoshop诞生至今已经接近30年了,这几年特别是2017年以来Photoshop更新非常频繁,加入了人工智能技术之后Photoshop如虎添翼,今天就给大家盘点一下最新版本的Photosho ...

最新文章

  1. 嵌入式linux设计报告,嵌入式linux课程设计报告
  2. android怎么长按一张图片保存到相册_instagram怎么保存图片?
  3. java将jfif格式转换成ipg_win10系统将jfif格式转jpg的操作方法
  4. mysql ondumplictcate_4.5万字手把手教你实现MySQL TB级数据存储!!
  5. python3.12答案_编程常见问题
  6. 网易云音乐刷听歌量_网易云音乐极速版悄然上线!听歌体验同之前没有差别
  7. 【动态规划】LeetCode 62. Unique Paths
  8. 外贸客户如何跟进?外贸客户类型及跟进策略
  9. 2.1 matlab特殊矩阵(零矩阵、幺矩阵、单位矩阵、魔方矩阵、范德蒙德矩阵和希尔伯特矩阵)
  10. Java 案例一 商场库存清单案例
  11. Excel中怎么添加批注
  12. html2canvas给图片添加水印,小程序用Canvas给图片加水印,拼接图片,制作名片
  13. 关于TDA1557Q
  14. CSS设置背景颜色为透明
  15. 将文件复制到FTP服务器时发生错误。 的解决办法
  16. 聚合签名、门限签名、Multisigs 和多签名
  17. 500年前的北大寺物证
  18. 最近读书得感悟 (二) 为自己工作的必要性
  19. 转贴一下 老婆日记
  20. 力扣486-预测赢家

热门文章

  1. 安卓手机卡顿怎么解决_手机卡顿怎么办? 几招教你轻松解决!
  2. 笨方法“学习python笔记之文件操作
  3. python使用全局变量的坑,要使用global
  4. 多态和重载的区别及用法
  5. keep-alive和多路复用
  6. sql查询出的字段切割_SPL 简化 SQL 案例详解:多层固定分组
  7. @excel 注解_Java中注解学习系列教程-3
  8. 光眼图和电眼图_一种电眼调试方法及装置制造方法及图纸
  9. int转为string类型方法
  10. js点击复制文本 - 案例篇