php的小技巧(php方法大全)

发布时间:2022-11-10

本文目录一览:

  1. 有哪些 PHP 调试技巧?
  2. PHP的入门技巧有哪些?
  3. 高质量PHP代码的50个技巧(3)

有哪些 PHP 调试技巧?

  1. 最简单经典的var_dump()或者echo + exit()
  2. 配置error_log,能够解决很多疑难杂症
  3. debug方式是:xdebug
  4. firebug + firephp或者chrome + chromephp

PHP的入门技巧有哪些?

PHP 是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收了C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。杭州这边到有码互联学习php还是挺好的,一般学习的都是3-4个月的学习,然后有2个月实训,这样下来就会增加自己的一些实战能力。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。如果有其他编程语言的基础,那上手更容易。

  1. PHP 安装与配置 新手建议使用PHP集成环境,Wampserver5。 Wamp就是Windows Apache Mysql PHP集成安装环境,即在window下的apache、php和mysql的服务器软件。
  2. PHP 学习资料 建议参考w3school的PHP学习资料,简单易懂,适合新手。 PHP视频教程,建议参考PHP100的视频教程,挺不错的。
  3. PHP 相关学习资料 PHP 的主要应用是web应用,web应用是由多种技术组成的。 学习PHP的同时,需要学习相关的其他技术。
    • SQL 是用于访问和处理数据库的标准的计算机语言
    • HTML 超文本标签语言
    • CSS 层叠样式表
    • JavaScript 世界上最流行的脚本语言
    • jQuery 是一个JavaScript库,极大地简化了 JavaScript 编程

高质量PHP代码的50个技巧(3)

42
43
44
45

/**
 * Method to execute a command in the terminal
 * Uses :
 * 1. system
 * 2. passthru
 * 3. exec
 * 4. shell_exec
 */
function terminal($command)
{
    // system
    if (function_exists('system')) {
        ob_start();
        system($command, $return_var);
        $output = ob_get_contents();
        ob_end_clean();
    }
    // passthru
    else if (function_exists('passthru')) {
        ob_start();
        passthru($command, $return_var);
        $output = ob_get_contents();
        ob_end_clean();
    }
    // exec
    else if (function_exists('exec')) {
        exec($command, $output, $return_var);
        $output = implode("\n", $output);
    }
    // shell_exec
    else if (function_exists('shell_exec')) {
        $output = shell_exec($command);
    } else {
        $output = 'Command execution not possible on this system';
        $return_var = 1;
    }
    return array('output' => $output, 'status' => $return_var);
}
terminal('ls');

上面的函数将运行shell命令, 只要有一个系统函数可用, 这保持了代码的一致性.

5. 灵活编写函数

function add_to_cart($item_id, $qty)
{
    $_SESSION['cart']['item_id'] = $qty;
}
add_to_cart('IPHONE3', 2);

使用上面的函数添加单个项目。而当添加项列表的时候,你要创建另一个函数吗?不用,只要稍加留意不同类型的参数,就会更灵活。如:

function add_to_cart($item_id, $qty)
{
    if (!is_array($item_id)) {
        $_SESSION['cart']['item_id'] = $qty;
    } else {
        foreach ($item_id as $i_id => $qty) {
            $_SESSION['cart'][$i_id] = $qty;
        }
    }
}
add_to_cart('IPHONE3', 2);
add_to_cart(array('IPHONE3' => 2, 'IPAD' => 5));

现在,同个函数可以处理不同类型的输入参数了。可以参照上面的例子重构你的多处代码,使其更智能。

6. 有意忽略php关闭标签

我很想知道为什么这么多关于php建议的博客文章都没提到这点。

<?php
echo "Hello";
// Now don't close this tag

这将节约你很多时间。我们举个例子: 一个 super_class.php 文件

<?php
class super_class
{
    function super_function()
    {
        // super code
    }
}
?>
// super extra character after the closing tag

index.php

<?php
require_once('super_class.php');
// echo an image or pdf , or set the cookies or session data

这样,你将会得到一个 Headers already send error。为什么?因为 “super extra character” 已经被输出了。现在你得开始调试啦。这会花费大量时间寻找 super extra 的位置。因此,养成省略关闭符的习惯:

<?php
class super_class
{
    function super_function()
    {
        // super code
    }
}
// No closing tag

这会更好。

7. 在某地方收集所有输入,一次输出给浏览器

这称为输出缓冲,假如说你已在不同的函数输出内容:

function print_header()
{
    echo "<p id='header'>Site Log and Login links</p>";
}
function print_footer()
{
    echo "<p id='footer'>Site was made by me</p>";
}
print_header();
for ($i = 0; $i < 100; $i++) {
    echo "I is : $i <br />";
}
print_footer();

替代方案,在某地方集中收集输出。你可以存储在函数的局部变量中,也可以使用ob_startob_end_clean。如下:

function print_header()
{
    $o = "<p id='header'>Site Log and Login links</p>";
    return $o;
}
function print_footer()
{
    $o = "<p id='footer'>Site was made by me</p>";
    return $o;
}
echo print_header();
for ($i = 0; $i < 100; $i++) {
    echo "I is : $i <br />";
}
echo print_footer();

为什么需要输出缓冲: 可以在发送给浏览器前更改输出。如 str_replace 函数或可能是 preg_replace 或添加些监控/调试的html内容。 输出给浏览器的同时又做php的处理很糟糕。你应该看到过有些站点的侧边栏或中间出现错误信息。知道为什么会发生吗?因为处理和输出混合了。

8. 发送正确的mime类型头信息,如果输出非html内容的话。

输出一些xml。

$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml .= "<response><code>0</code></response>";
// Send xml data
echo $xml;

工作得不错。但需要一些改进。

$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml .= "<response><code>0</code></response>";