设为首页 收藏本站
查看: 667|回复: 0

[经验分享] PHP相关杂项知识

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2017-3-24 12:30:01 | 显示全部楼层 |阅读模式

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-354664-1-1.html 上篇帖子: PHP共享内存的使用 下篇帖子: PHP相关杂项知识
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表