当前位置:  开发笔记 > 编程语言 > 正文

什么是有用的PHP成语?

如何解决《什么是有用的PHP成语?》经验,为你挑选了4个好方法。

我正在寻求改进我的PHP编码,并想知道其他程序员使用什么特定于PHP的技术来提高生产力或解决PHP限制.

一些例子:

    处理命名空间的类命名约定:Part1_Part2_ClassName映射到文件Part1/Part2/ClassName.php

    if ( count($arrayName) ) // handles $arrayName being unset or empty

    变量函数名称,例如 $func = 'foo'; $func($bar); // calls foo($bar);

Preston.. 13

最后,在专注于特定于PHP的任何内容之前,通过学习一般良好的编程实践,您将首先充分利用PHP.话说回来...


宽大地应用以获得乐趣和利润:

    foreach循环中的迭代器.几乎从来没有错误的时间.

    围绕类自动加载设计.使用spl_autoload_register(),而不是__autoload().对于奖励积分,让它以递归方式扫描目录树,然后随意将您的类重组为更逻辑的目录结构.

    到处输入.对标量使用断言.

    function f(SomeClass $x, array $y, $z) {
        assert(is_bool($z))
    }
    

    输出HTML以外的内容.

    header('Content-type: text/xml'); // or text/css, application/pdf, or...
    

    学习使用例外.编写一个错误处理程序,将错误转换为异常.

    define()用类常量替换全局常量.

    用适当的Date类替换你的Unix时间戳.

    在长函数中,unset()变量就完成了.


愧疚地使用:

    循环遍历对象的数据成员,如数组.感到内疚,他们没有被宣布为私人.这不是像Python或Lisp这样的异教徒语言.

    使用输出缓冲区来组合长字符串.

    ob_start();
    echo "whatever\n";
    debug_print_backtrace();
    $s = ob_get_clean();
    


除非绝对必要,否则可能会避免,除非你真的讨厌维护程序员和你自己:

    魔术方法(__get,__set,__call)

    extract()

    结构化数组 - 使用对象


changelog.. 10

我在PHP方面的经验教会了我一些东西.仅举几例:

始终输出错误.这些是我典型项目的前两行(在开发模式下):

ini_set('display_errors', '1');
error_reporting(E_ALL);

永远不要使用自动化.像autoLoad这样的东西可能会在将来咬你.

始终要求使用依赖类require_once.这样你就可以确定你的依赖关系是直的.

if(isset($array[$key]))而不是if($array[$key]).如果未定义密钥,则第二个将发出警告.

定义变量时(即使是for循环)给它们提供详细的名称($listIndex而不是$j)

评论,评论,评论.如果特定的代码片段看起来不明显,请发表评论.稍后你可能需要检查它,可能不记得它的目的是什么.

除此之外,类,函数和变量命名约定由您和您的团队决定.最近我一直在使用Zend Framework的命名约定,因为他们觉得我很对.

此外,当处于开发模式时,我设置了一个错误处理程序,它将在最轻微的错误(甚至是警告)时输出错误页面,从而为我提供完整的回溯.



1> Preston..:

最后,在专注于特定于PHP的任何内容之前,通过学习一般良好的编程实践,您将首先充分利用PHP.话说回来...


宽大地应用以获得乐趣和利润:

    foreach循环中的迭代器.几乎从来没有错误的时间.

    围绕类自动加载设计.使用spl_autoload_register(),而不是__autoload().对于奖励积分,让它以递归方式扫描目录树,然后随意将您的类重组为更逻辑的目录结构.

    到处输入.对标量使用断言.

    function f(SomeClass $x, array $y, $z) {
        assert(is_bool($z))
    }
    

    输出HTML以外的内容.

    header('Content-type: text/xml'); // or text/css, application/pdf, or...
    

    学习使用例外.编写一个错误处理程序,将错误转换为异常.

    define()用类常量替换全局常量.

    用适当的Date类替换你的Unix时间戳.

    在长函数中,unset()变量就完成了.


愧疚地使用:

    循环遍历对象的数据成员,如数组.感到内疚,他们没有被宣布为私人.这不是像Python或Lisp这样的异教徒语言.

    使用输出缓冲区来组合长字符串.

    ob_start();
    echo "whatever\n";
    debug_print_backtrace();
    $s = ob_get_clean();
    


除非绝对必要,否则可能会避免,除非你真的讨厌维护程序员和你自己:

    魔术方法(__get,__set,__call)

    extract()

    结构化数组 - 使用对象



2> changelog..:

我在PHP方面的经验教会了我一些东西.仅举几例:

始终输出错误.这些是我典型项目的前两行(在开发模式下):

ini_set('display_errors', '1');
error_reporting(E_ALL);

永远不要使用自动化.像autoLoad这样的东西可能会在将来咬你.

始终要求使用依赖类require_once.这样你就可以确定你的依赖关系是直的.

if(isset($array[$key]))而不是if($array[$key]).如果未定义密钥,则第二个将发出警告.

定义变量时(即使是for循环)给它们提供详细的名称($listIndex而不是$j)

评论,评论,评论.如果特定的代码片段看起来不明显,请发表评论.稍后你可能需要检查它,可能不记得它的目的是什么.

除此之外,类,函数和变量命名约定由您和您的团队决定.最近我一直在使用Zend Framework的命名约定,因为他们觉得我很对.

此外,当处于开发模式时,我设置了一个错误处理程序,它将在最轻微的错误(甚至是警告)时输出错误页面,从而为我提供完整的回溯.


即使使用E_ALL也不会抛出错误.我很确定这个;)

3> Lucas Oman..:

幸运的是,名称空间在5.3和6中.我强烈建议不要使用Path_To_ClassName惯用法.它会使代码变得混乱,你永远不会改变你的库结构......

SPL的自动加载很棒.如果您有条理,它可以为您节省典型的20行包含块,并且需要在每个文件的顶部.您也可以在代码库中更改内容,只要PHP可以从这些目录中包含,就不会有任何中断.

自由使用===结束==.例如:

if (array_search('needle',$array) == false) {
  // it's not there, i think...
}

如果'needle'处于关键零点,则会给出假阴性.代替:

if (array_search('needle',$array) === false) {
  // it's not there!
}

永远是准确的.



4> nickf..:

看到这个问题:PHP的隐藏功能.它有很多非常有用的PHP技巧,其中最好的技巧已经浮出水面.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有