首页 培训网 最新资讯 热门问答

PHP

13013833891 免费试听 在线客服

您的位置: 苏州培训网 > PHP培训资讯 > 苏州php初学者必备知识培训

苏州php初学者必备知识培训

来源:教育联展网 | 发布时间: | 编辑:佚名

在技术学习的道路上,能掌握一些有用的技巧,对于初学者是非常有帮助的,本文就为大家总结了php初学者必备的15大技巧,相信能让你的php学习更顺利。

苏州php初学者必备知识培训

在技术学习的道路上,能掌握一些有用的技巧,对于初学者是非常有帮助的,本文就为大家总结了php初学者必备的15大技巧,相信能让你的php学习更顺利。

1.php初学者培训:不要在你的应用程序中gzip输出,让apache来做

考虑使用ob_gzhandler?不,别这样做。它没有任何意义。PHP应该是来写应用程序的。不要担心PHP中有关如何优化在服务器和浏览器之间传输的数据。

使用apache mod_gzip/mod_deflate**.htaccess文件压缩内容。

2.php初学者培训:从php echo javascript代码时使用json_encode

有些时候一些JavaScript代码是从php动态生成的。

$images = array( 'myself.png' , 'friends.png' , 'colleagues.png');$js_code = '';foreach($images as $image){$js_code .= "'$image' ,";}$js_code = 'var images = [' . $js_code . ']; ';echo $js_code;//Output is var images = ['myself.png' ,'friends.png' ,'colleagues.png' ,];

放聪明点。使用json_encode:

$images = array( 'myself.png' , 'friends.png' , 'colleagues.png');$js_code = 'var images = ' . json_encode($images);echo $js_code;//Output is : var images = ["myself.png","friends.png","colleagues.png"]

这不是很整洁?

3.php初学者培训:在写入任何文件之前检查目录是否可写

在写入或保存任何文件之前,请务必要检查该目录是否是可写的,如果不可写的话,会闪烁错误消息。这将节省你大量的“调试”时间。当你工作于Linux时,权限是必须要处理的,并且会有很多很多的权限问题时,当目录不可写,文件无法读取等的时候。

请确保你的应用程序尽可能智能化,并在**短的时间内报告**重要的信息。

$contents = "All the content";$file_path = "/var/www/project/content.txt";file_put_contents($file_path , $contents);

这完全正确。但有一些间接的问题。file_put_contents可能会因为一些原因而失败:

  • 父目录不存在

  • 目录存在,但不可写

  • 锁定文件用于写入?

因此,在写入文件之前**能够一切都弄明确。

$contents = "All the content";$dir = '/var/www/project';$file_path = $dir . "/content.txt";if(is_writable($dir)){    file_put_contents($file_path , $contents);}else{    die("Directory $dir is not writable, or does not exist. Please check");}

**这样做,你就能得到哪里文件写入失败以及为什么失败的准确信息。

4.php初学者培训:改变应用程序创建的文件的权限

当在Linux环境下工作时,权限处理会浪费你很多时间。因此,只要你的php应用程序创建了一些文件,那就应该修改它们的权限以确保它们在外面“平易近人”。否则,例如,文件是由“php”用户创建的,而你作为一个不同的用户,系统就不会让你访问或打开文件,然后你必须努力获得root权限,更改文件权限等等。

// Read and write for owner, read for everybody elsechmod("/somedir/somefile", 0644);// Everything for owner, read and execute for otherschmod("/somedir/somefile", 0755);

5.php初学者培训:不要检查提交按钮值来检查表单提交

if($_POST['submit'] == 'Save'){    //Save the things}

以上代码在大多数时候是正确的,除了应用程序使用多语言的情况。然后“Save”可以是很多不同的东西。那么你该如何再做比较?所以不能依靠提交按钮的值。相反,使用这个:

if( $_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['submit']) ){    //Save the things}

现在你就可以摆脱提交按钮的值了。

6.php初学者培训:在函数中总是有相同值的地方使用静态变量

//Delay for some timefunction delay(){    $sync_delay = get_option('sync_delay');    echo "<br />Delaying for $sync_delay seconds...";    sleep($sync_delay);    echo "Done <br />";}

相反,使用静态变量:

//Delay for some timefunction delay(){    static $sync_delay = null;    if($sync_delay == null)    {    $sync_delay = get_option('sync_delay');    }    echo "<br />Delaying for $sync_delay seconds...";    sleep($sync_delay);    echo "Done <br />";}

7.php初学者培训:不要直接使用$ _SESSION变量

一些简单的例子是:

$_SESSION['username'] = $username;$username = $_SESSION['username'];

但是这有一个问题。如果你正在相同域中运行多个应用程序,会话变量会发生冲突。2个不同的应用程序在会话变量中可能会设置相同的键名。举个例子,一个相同域的前端门户和后台管理应用程序。

因此,用包装函数使用应用程序特定键:

define('APP_ID' , 'abc_corp_ecommerce');//Function to get a session variablefunction session_get($key){    $k = APP_ID . '.' . $key;    if(isset($_SESSION[$k]))    {        return $_SESSION[$k];    }    return false;}//Function set the session variablefunction session_set($key , $value){    $k = APP_ID . '.' . $key;    $_SESSION[$k] = $value;    return true;}

8.php初学者培训:封装实用辅助函数到一个类中

所以,你必须在一个文件中有很多实用函数:

function utility_a(){    //This function does a utility thing like string processing}function utility_b(){    //This function does nother utility thing like database processing}function utility_c(){    //This function is ...}

自由地在应用程序中使用函数。那么你或许想要将它们包装成一个类作为静态函数:

class Utility{    public static function utility_a()    {    }    public static function utility_b()    {    }    public static function utility_c()    {    }}//and call them as $a = Utility::utility_a();$b = Utility::utility_b();

这里你可以得到的一个明显好处是,如果php有相似名称的内置函数,那么名称不会发生冲突。

从另一个角度看,你可以在相同的应用程序中保持多个版本的相同类,而不会发生任何冲突。因为它被封装了,就是这样。

9.php初学者培训:一些傻瓜式技巧

  • 使用echo代替print

  • 使用str_replace代替preg_replace,除非你确定需要它

  • 不要使用short tags

  • 对于简单的字符串使用单引号代替双引号

  • 在header重定向之后要记得做一个exit

  • 千万不要把函数调用放到for循环控制行中。

  • isset比strlen快

  • 正确和一致地格式化你的代码

  • 不要丢失循环或if-else块的括号。

不要写这样的代码:

if($a == true) $a_count  ;

这绝对是一种浪费。

这样写

if($a == true){    $a_count  ;}

不要**吃掉语法缩短你的代码。而是要让你的逻辑更简短。使用具有代码高亮功能的文本编辑器。代码高亮有助于减少错误。

10. php初学者培训:使用array_map快速处理数组

比方说,你要trim一个数组的所有元素。新手会这样做:

foreach($arr as $c => $v){    $arr[$c] = trim($v);}

但它可以使用array_map变得更整洁:

$arr = array_map('trim' , $arr);

这适用于trim数组$arr的所有元素。另一个类似的函数是array_walk。

11.php初学者培训:使用php过滤器验证数据

你是不是使用正则表达式来验证如电子邮件,IP地址等值?是的,每个人都是这样做的。现在,让我们试试一个不同的东西,那就是过滤器。

php过滤器扩展程序将提供简单的方法来有效验证或校验值。

12.php初学者培训:强制类型检查

$amount = intval( $_GET['amount'] );$rate = (int) $_GET['rate'];

这是一种好习惯。

13.php初学者培训:使用set_error_handler()将Php错误写入到文件

set_error_handler()可以用来设置自定义的错误处理程序。在文件中编写一些重要的错误用于日志是个好主意。

14.php初学者培训:小心处理大型数组

大型的数组或字符串,如果一个变量保存了一些规模非常大的东西,那么要小心处理。常见错误是创建副本,然后耗尽内存,并得到内存溢出的致命错误:

$db_records_in_array_format; //This is a big array holding 1000 rows from a table each having 20 columns , every row is atleast 100 bytes , so total 1000 * 20 * 100 = 2MB$cc = $db_records_in_array_format; //2MB moresome_function($cc); //Another 2MB ?

当导入csv文件或导出表到csv文件时,上面这样的代码很常见。

像上面这样做可能经常会由于内存限制而让脚本崩溃。对于小规模的变量它不会出现问题,但当处理大型数组时一定要对此加以避免。

考虑**引用传递它们,或者将它们存储在一个类变量中:

$a = get_large_array();pass_to_function(&$a);

这样一来,相同的变量(并非其副本)将用于该函数。

class A{    function first()    {        $this->a = get_large_array();        $this->pass_to_function();    }    function pass_to_function()    {        //process $this->a    }}

尽快复原它们,这样内存就能被释放,并且脚本的其余部分就能放松。

下面是关于如何**引用来赋值从而节省内存的一个简单示例。

<?phpini_set('display_errors' , true);error_reporting(E_ALL);$a = array();for($i = 0; $i < 100000 ; $i  ){    $a[$i] = 'A'.$i;}echo 'Memory usage in MB : '. memory_get_usage() / 1000000 . '<br />';$b = $a;$b[0] = 'B';echo 'Memory usage in MB after 1st copy : '. memory_get_usage() / 1000000 . '<br />';$c = $a;$c[0] = 'B';echo 'Memory usage in MB after 2st copy : '. memory_get_usage() / 1000000 . '<br />';$d =& $a;$d[0] = 'B';echo 'Memory usage in MB after 3st copy (reference) : '. memory_get_usage() / 1000000 . '<br />';

一个典型php 5.4机器上的输出是:

Memory usage in MB : 18.08208Memory usage in MB after 1st copy : 27.930944Memory usage in MB after 2st copy : 37.779808Memory usage in MB after 3st copy (reference) : 37.779864

因此可以看出,内存被保存在第3份**引用的副本中。否则,在所有普通副本中内存将被越来越多地使用。

15.php初学者培训:在整个脚本中使用单一的数据库连接

请确保你在整个脚本使用单一的数据库连接。从一开始就打开连接,使用至结束,并在结束时关闭它。不要像这样在函数内打开连接:

function add_to_cart(){    $db = new Database();    $db->query("INSERT INTO cart .....");}function empty_cart(){    $db = new Database();    $db->query("DELETE FROM cart .....");}

有多个连接也不好,会因为每个连接都需要时间来创建和使用更多的内存,而导致执行减缓。

在特殊情况下。例如数据库连接,可以使用单例模式。




立刻咨询,领取限 量报班资格

咨询联系方式:13777371146(庄老师)或者QQ:1073963412 还可以直接在线咨询

想了解更多苏州PHP网站开发培训相关信息,记得在线留言哦!

热门机构推荐
PHP

免费体验课开班倒计时

11: 41: 09

稍后会有专业老师给您回电,请保持电话畅通

咨询电话:13013833891

本周热门资讯

全国分站 热门机构

北京PHP培训 上海PHP培训 广州PHP培训 深圳PHP培训 杭州PHP培训 苏州PHP培训 南京PHP培训 天津PHP培训 佛山PHP培训 南宁PHP培训 长沙PHP培训 重庆PHP培训 太原PHP培训 青岛PHP培训 宁波PHP培训 郑州PHP培训 西安PHP培训 厦门PHP培训 武汉PHP培训 成都PHP培训 无锡PHP培训 济南PHP培训 昆明PHP培训 贵阳PHP培训 扬州PHP培训 徐州PHP培训 珠海PHP培训 合肥PHP培训 长春PHP培训

天津优就业IT培训上海非凡教育佛山达内IT教育珠海达内教育

申请试听名额

已有10254人申请免费试听

01电话咨询 | 13013833891

QQ:1413838287
加盟合作:0755-83654572

今日已有25人申请,本月限额500