PHP开发经验总结

请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?

  1. 按值传递:函数范围内对值的任何改变在函数外部都会被忽略
  2. 按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
  3. 优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。

js闭包,原型链是什么?

  1. 闭包是指有权访问另一个函数作用域中的变量的函数
  2. 派生对象使用proto指针保存对原型对象的链接,就形成了原型链。对象通过原型链相互连接。所有的对象都在原型链上。所有的原型链顶端都是Object对象。

php中for和foreach比较

  1. php推荐用foreach。
  2. for需要事先count(arr)计算数组长度,需要引入自增变量i,每次循环都要进行条件判断i<c,然后自增i++,输出数组元素时,arr[$i]需要进行哈希操作.
  3. foreach循环数组时,指针会自动指向下一个元素,不需要计算数组长度,没有条件判断和自增变量,调用元素时也没有哈希操作

mysql与mysqli的区别

  1. mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。
  2. mysqli连接:一直都只使用同一个进程。

php7和PHP5对比的新特性和性能优化

  1. 抽象语法树(AST): AST在PHP编译过程作为一个中间件的角色,替换原来直接从解释器吐出opcode的方式,让解释器(parser)和编译器(compliler)解耦,可以减少一些Hack代码,同时,让实现更容易理解和可维护
  2. Natice TLS:线程数据共享安全,开启一个全局线程用作数据共享内存空间
  3. 指定参数 返回值类型
  4. zval 结构的变化
  5. 异常处理
  6. 新的参数解析方式
  7. hashtable变化

防止SQL注入

  1. 打开php的安全模式同时关闭用户组安全:safe_mode=On------safe_mode_gid = off
  2. 控制php脚本能访问的目录,设置为自己的网站更目录:open_basedir = D:/usr/www
  3. 关闭危险函数:display_function=
  4. 关闭PHP版本信息在http头中的泄漏:expose_php = Off
  5. 关闭注册全局变量:register_globals = Off(默认关闭)
  6. MYSQL的降权运行
  7. 使用mysql_real_escape_string函数对参数过滤

预防XSS攻击

  1. 过滤从表单提交来的数据,使用php过滤函数htmlentities()中文一起转化,htmlspecialchars()不会转化中文默认情况下不处理单引号,最好加上第二个参数ENT_QUOTES
  2. 打开session.cookie_httponly
  3. 扩展remove_xss方法正则过滤

预防CSRF攻击

  1. 在php.ini中设置禁用allow_url_fopen和allow_url_include
  2. 生成另一个一次性的令牌并将其嵌入表单,保存在会话中(一个会话变量),在提交时检查它

PHP垃圾回收机制

PHP可以自动进行内存管理,清除不再需要的对象。PHP使用了引用计数(referencecounting)这种单纯的垃圾回收(garbagecollection)机制。每个对象都内含一个引用计数器,每个reference连接到对象,计数器加1。当reference离开生存空间或被设为NULL,计数器减1。当某个对象的引用计数器为零时,PHP知道你将不再需要使用这个对象,释放其所占的内存空间。

双引号和单引号的区别

  1. 双引号解释变量,单引号不解释变量
  2. 双引号里插入单引号,其中单引号里如果有变量的话,变量解释
  3. 双引号的变量名后面必须要有一个非数字、字母、下划线的特殊字符,或者用{}讲变量括起来,否则会将变量名后面的部分当做一个整体,引起语法错误
  4. 双引号解释转义字符,单引号不解释转义字符,但是解释'\和\
  5. 能使单引号字符尽量使用单引号,单引号的效率比双引号要高(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断)

获取MySQL InnoDB索引树的高度

SELECT
b.name, a.name, index_id, type, a.space, a.PAGE_NO
FROM
information_schema.INNODB_SYS_INDEXES a,
information_schema.INNODB_SYS_TABLES b
WHERE
a.table_id = b.table_id AND a.space <> 0;

isset、empty、is_null的区别

  1. isset 判断变量是否定义或者是否为空
  2. empty:判断变量的值是否为空,能转换为false的都是空,为空返回true,反之返回false。
  3. is_null:检测传入的值(值、变量、表达式)是否为null
最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容

  • 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:...
    lmh829阅读 346评论 0 0
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,168评论 0 3
  • 总结了一些开发中常用的函数: usleep() //函数延迟代码执行若干微秒。 unpack() //函数从二进制...
    ADL2022阅读 454评论 0 3
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 1,984评论 1 24
  • 2018年已到岁尾,回顾2018年,是蜕变的一年,是收获的一年,在这一年里,众煌亲互帮互助,相互影响提升,...
    简简单单健健康康阅读 336评论 0 0