php易混淆知识

这篇博客涵盖了PHP的基础知识和高级话题,包括include/require的区别、字符串和数组函数、TP5与Laravel框架对比、魔术方法、Redis及MongoDB的特点、SVN与Git对比、设计模式、HTTP状态码、安全机制、性能优化、数据库操作和优化策略,以及面向对象的三大特征。还讨论了如CSRF和XSS攻击的防范、索引作用、数据库范式等,深入到Git使用、分库分表和MySQL读写分离等运维实践。
摘要由CSDN通过智能技术生成

1、include 和 require 都能把另外一个文件包含到当前文件中 他们有什么区别?include 和 include_once 又有什么区别?

二者区别只有一个,那就是对包含文件的需求程度
include 就是包含,如果被包含的文件不存在的话, 那么则会提示一个错误,但是程序会继续执行下去。
require 意思是需要,如果被包含文件不存在或者 无法打开的时候,则会提示错误,并且会终止程序的执行。
这两种结构除了在如何处理失败之外完全一样。
once 的意思是一次,那么 include_once 和 require_once 表示只包含一次,避免重复包含。

2、常用字符串函数:

 1. explode — 使用一个字符串分割另一个字符串
 2. htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符
 3. htmlspecialchars — 将特殊字符转换为 HTML 实体
 4. implode — 将一个一维数组的值转化为字符串
 5. join — 别名 implode
 6. lcfirst — 使一个字符串的第一个字符小写
 7. ucfirst — 将字符串的首字母转换为大写
 8. ucwords — 将字符串中每个单词的首字母转换为大写
 9. ltrim — 删除字符串开头的空白字符(或其他字符)
 10. md5 — 计算字符串的 MD5 散列值
 11. rtrim — 删除字符串末端的空白字符(或者其他字符)
 12. sha1 — 计算字符串的 sha1 散列值 
 13. str_replace — 子字符串替换
 14. strip_tags — 从字符串中去除 HTML 和 PHP 标记
 15. stripos — 查找字符串首次出现的位置(不区分大小写)
 16. strlen — 获取字符串长度
 17. strpos — 查找字符串首次出现的位置
 18. strrev — 反转字符串
 19. strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
 20. strstr — 查找字符串的首次出现
 21. strtolower — 将字符串转化为小写
 22. strtoupper — 将字符串转化为大写
 23. substr_replace — 替换字符串的子串
 24. substr — 返回字符串的子串(第二参数为数字strstr 为字符串)
 25. trim — 去除字符串首尾处的空白字符(或者其他字符)

3、常用数组函数

 1. array_change_key_case — 将数组中的所有键名修改为全大写或小写
 2. array_chunk — 将一个数组分割成多个
 3. array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
 4. 	array_diff — 计算数组的差集
 5. array_filter — 用回调函数过滤数组中的单元
 6. array_key_exists — 检查数组里是否有指定的键名或索引
 7. array_keys — 返回数组中部分的或所有的键名
 8. array_map — 为数组的每个元素应用回调函数
 9. array_merge — 合并一个或多个数组
 10. array_multisort — 对多个数组或多维数组进行排序
 11. array_pop — 弹出数组最后一个单元(出栈)
 12. array_push — 将一个或多个单元压入数组的末尾(入栈)
 13. array_reverse — 返回单元顺序相反的数组
 14. array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
 15. array_shift — 将数组开头的单元移出数组
 16. array_unshift — 在数组开头插入一个或多个单元
 17. array_values — 返回数组中所有的值
 18. array_unique — 移除数组中重复的值
 19. arsort — 对数组进行逆向排序并保持索引关系(索引数组大到小排序)
 20. asort — 对数组进行排序并保持索引关系(索引数组小到大排序)
 21. ksort — 对数组按照键名排序(关联数组按abc顺序排序)
 22. krsort — 对数组按照键名逆向排序(关联数组cba顺序排序)
 23. count — 计算数组中的单元数目,或对象中的属性个数
 24. in_array — 检查数组中是否存在某个值
 25. list — 把数组中的值赋给一组变量

4、 获取ip方法

客户端ip :  $SERVER[“REMOTE_ADDR”]
服务端ip :  gethostbyname("www.367edu.com")

5、TP5和Laravel框架的区别

1.在Laravel框架里,由于其考虑到了跨站请求伪造, 所以如果使用form表单以post方式进行传值时,如果不再form表单中加入{
  {csrf_field()}}则会报出TokenMethodnotfound的语法错误;而TP框架则需要自己手动完成防止跨站攻击的代码;
2.Laravel是一个重路由的框架(5.4),所有的功能都是由路由发起的,哪怕没有控制器方法,只要写了路由就能够访问,thinkPHP(3.2),必须要有控制器方法才能正常访问;
3.中间件,Laravel特点,可以实现访问前后的处理,例如请求和返回,权限认证等; 
4、Lavavel更庞大,安全性也更高,更适合开发大中型项目,被称为“巨匠型开发框架”。

6、魔术方法

__construct(),  实例化对象时被调用
__destruct(),   当删除一个对象或对象操作终止时被调用。
__call(),    对象调用某个方法若不存在,则会去调用__call函数。
__callStatic(),当创建一个静态方法以调用该类中不存在的一个方法时使用此函数。与__call()方法相同,接受方法名和数组作为参数。
__get(),读取一个对象的属性时若不存在,则会调用__get函数。
__set(), 设置一个对象的属性时若不存在,则会调用__set函数。
__isset(),检测一个对象的属性是否存在时被调用。
__unset(),删除一个对象的属性时被调用。
__sleep(),serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
__wakeup(), unserialize时被调用,做些对象的初始化工作。
__toString(), 打印一个对象的时被调用。
__invoke(),把实例对象当作方法调用
__set_state(),调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
__clone()  克隆对象时被调用。如:$t&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jason Ho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值