`
sabolasi
  • 浏览: 907129 次
文章分类
社区版块
存档分类
最新评论

PHP相关杂项知识

 
阅读更多
  1. php -h可以获取帮助信息。PHP版本号信息:/your_current_path/php -v,PHP运行脚本:/your_current_path/php your_file_path,PHP运行语句/your_current_path/php -r your_code_snippet。
  2. 代码执行结束后,PHP会根据具体执行情况自动的释放,如果执行过程中内存消耗较大,可以利用NULL或unset来释放内存。区别在于,前者将变量保存的值所占用的内存释放掉,后者会将变量本身以及它所保存的值释放掉。判断变量是否存在可以用isset和empty函数,如果只是要检查变量是否保存了值,可以用is_null。
  3. 字符串可以利用花括号{}来对单个字符进行操作,如$s='hello world',$s{0}的值就为h;而且可以利用这种做法来为某个位置的字符单独赋值,如$s{0}="who are you",这时只有右边表达式第一个字符会被利用在赋值操作中,如果$s引用的是一个非字符串内容,那什么都不会发生。
  4. 变量的赋值通常是值拷贝,如果想让两个变量共享一个内存地址,可以用&。
  5. 常量永远不能用操作符“=”被赋值
  6. 可以用“`”操作符来实现函数shell_exec的功能,`who am i`等价于shell_exec("who am i")。
  7. 逻辑与和逻辑或的同义词AND,OR,他们的优先级别低于“&&”和“||”,赋值操作符“=”介于这两者之间。所以在使用语句 varible = statement OR die("string info") 时,OR 会让赋值语句先进行操作,如果赋值过程中有错误发生,则执行 die 语句;如果使用了操作符“||”,因为它的优先级别要比“=”高,则先进行的是与操作,后进行赋值操作。
  8. exit用于终止当前脚本的执行,die是exit的一个补充版本,可以输出一个错误消息。正常情况下,return的作用与exit相同,但是,如果含有return语句的脚本是被另外一个脚本用include语句包含进来的话,return语句会将当前脚本的执行权返还给使用include语句的脚本。
  9. 对于不会影响脚本继续执行的错误来说,可以用set_error_handler来注册一个错误控制函数来对发生的错误进行处理(trigger_error用于出发自定义错误)。如果是面向对象的方式,可以利用try...catch。
  10. 函数通常返回的是值,如果是对象的话返回的是引用。我们还可以在方法名之前加上“&”来强迫返回地址,但要注意的是调用函数时,仍然需要书写“&”,这就是为什么有些函数名字前面有个“&”的原因。
  11. 函数中取得传递进来的参数,可以利用func_num_args()和func_get_arg,类似的功能在JavaScript也有。
  12. 动态函数调用,$my_function = 'print_r'; $my_function(localtime());
  13. 所有的变量都有针对它本身的一个内存表。某个函数的内部变量不可以被其它范围的脚本操作。不属于任何函数的变量被当作全局变量,可以通过global语句或函数$GLOBALS来引用。函数内static关键字可以让变量保持住最后一次赋予的值。
  14. PHP可以利用参数的位置索引来取得形参,与此相关的函数有func_get_arg,func_get_args,func_num_args。
  15. 动态函数可以应用在过程话编程和面向对象编程中。
  16. “+”操作符对于数组来说有着特殊的意义,它把操作符右边的数组添加到左边,如果发现有键值相同时,则跳过当前合并操作,继续执行下一个合并操作。
  17. 在PHP面向对象编程中,类的函数除了传递进来的形参外,还有一个特殊的参数this,函数中只有使用了this的内容才代表是当前类的实例的属性或方法。在多数面向对象编程语言中,通常是把没有前缀修饰的内容都当作该类的成员(变量/属性或函数/方法),但在PHP中,默认会把没有this修饰的内容当作方法内部的本地变量对待。
  18. 早期版本PHP中,与类名相同的方法被当作构造函数,而新版本的PHP则采用__construct作为构造函数名,但旧的声明方式仍然有效,如果__construct与类名同名的方法同时存在时,则优先把_construct当作构造函数。
  19. PHP提供了__clone功能,与之相关的还有关键字this和that,分别代表当前对象和克隆出来的对象。
  20. self和parent分别是当前类和直接上级父类的代表,非类的实例,而this是当前类的实例代表。
  21. 如果不声明访问修饰符的话,默认是public。
  22. 静态绑定与动态绑定指是编译期与运行时,PHP只有动态绑定,但也有一部分模拟了静态绑定,如用private修饰的属性或方法。
  23. 动态添加属性与方法(__set __get),动态方法调用( __call),动态类加载(__autoload)。
  24. include 和 require 的第一个区别在于如何处理错误。include 会生成警告并继续运行脚本,但 require 会终止执行当前脚本;第二个区别是,include 类似于函数调用,而 require 更像文件内容替换。
  25. mysql 可以通过指定表类型来支持事务,innoDB(常见,支持事务),BDB(较少使用,支持事务), MyISAM(常见,不支持事务,但效率高)
  26. 单引号字符串、双引号字符串和HERE DOCUMENT(HEREDOC)字符串的区分:利用单引号构成的字符串,除了“/'”外,其它任何转义和插入变量均不识别,正是因为没有额外的解析任务,所以它的效率是最高的;双引号构成的字符串可以很好的识别转义字符和插入变量,其中包括“/r”和“/n”;HERE DOCUMENT(HEREDOC)的形式是<<<<<"XXX",由HEREDOC构成的字符串可以识别转义字符和插入变量,不识别“/r”和“/n”。PHP 5.3介绍了另一种语法NOWDOC,它的形式是<<<'XXX',标签需要用单引号夹注。
  27. PHP 5.3.0中引入了命名空间的功能
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics