随笔分类 - PHP
php下相关技术
摘要:在 PHP 的世界里,'0.0'、'0.00'和'0.000'是否被认为为空? 我们经常需要对0, 0.0,'0',false,null,'',"",array() 等等这类数据判断是否为空,下面来整理一下。 1、以下变量都被认为是空。 ' ' (空字符串) 0 (作为整数的0) 0.0 (作为浮点
阅读全文
摘要:PHP中的OPCode和OPCache 概述 PHP作为一门动态脚本语言,其在zend虚拟机执行过程为:读入脚本程序字符串,经由词法分析器将其转换为单词符号,接着语法分析器从中发现语法结构后生成抽象语法树,再经静态编译器生成opcode,最后经解释器模拟机器指令来执行每一条opcode。 确切地说,
阅读全文
摘要:雪花算法(Snowflake) 雪花算法的背景 新浪科技讯 北京时间2012年1月30日下午消息,据《时代周刊》报道,在龙年新春零点微博抢发活动中,新浪微博发博量峰值再创新高,龙年正月初一0点0分0秒,共有 32312 条微博同时发布,超过Twitter此前创下的每秒25088条的最高纪录。 每秒钟
阅读全文
摘要:php-fpm与swoole php本身是单进程单线程的,那么它是怎么解决并发问题的呢?这就涉及到本文将要提及的php-fpm和swoole 一、php-fpm(FastCGI 进程管理器) 1. 生命周期 php-fpm的生命周期如图: 2. 工作原理 php-fpm启动->生成n个fast-cg
阅读全文
摘要:PHP浮点数运算 在涉及到浮点数运算的时候,我们通常不会去深究细节,而是把它同整数运算做相同处理,认为它们和整数的区别只是多了个小数点而已。比如0.1+0.7等于0.8,我们理所当然地认为这样的运算结果是正确的。 然鹅,看似有穷的小数, 在计算机的二进制表示里却是无穷的。这就会导致浮点数的运算结果往
阅读全文
摘要:PHP开发中常见的坑 1、switch/case 使用 switch 语句可以避免冗长的 if..elseif..else 代码块。但是一不小心,就会掉坑里。 1)当case为一个范围时使用 0 < $num < 50,这种方式是不可以的,所以要用 0 < $num && $num < 50的方式,
阅读全文
摘要:PHP语法糖 每一次伴随着PHP新版本的发布,几乎都会有一些新的语法加入,这种语法对语言的功能并没有影响,但是更方便编程使用。我们称之为语法糖,其实就是一些语法技巧,来简化程序员工作。 1、用...定义变长参数函数(php5.6及以上版本) php在用户自定义函数中支持可变数量的参数列表:使用…$a
阅读全文
摘要:如何使用composer来构建项目 为什么需要用composer来构建项目呢? 大致有两个方面的原因: 1、解决项目中各代码库之间的依赖关系。 2、使用composer来做自动加载,减少手动require/include。再通过MVC和路由规则,一步一步让我们告别散装代码。提高代码的可读性,方便后期
阅读全文
摘要:PHP的基础知识(三) 一、url编码 1、PHP中,我们经常用到urlencode()和urldecode()这一对针对url编码和解码的函数 urlencode的作用: 1)将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页。 2)经常用来编码URL中的中文字符串,避免在
阅读全文
摘要:PHP中抽象类abstract和接口interface的区别 abstract类 1、关于抽象类 1) 抽象类必须有关键字abstract来修饰,抽象类中可以不含有抽象方法,如果一个类包含抽象方法,则该类必须是抽象类。 2) 抽象类不能被直接实例化,它的意义在于被扩展(extends) 2、关于抽象
阅读全文
摘要:PHP的自动加载机制 最近尝试着写一个简单的php框架,来加深对mvc的认识,其中类的载入是首先要解决的问题。这篇文章,让我们追根溯源,看看类的加载如何从最原始的做法然后一步一步改进,到现在形成比较成熟的做法。来对类的载入有一个更加深刻的认识。 1、面向过程式的做法 在 PHP 开发过程中,如果希望
阅读全文
摘要:PHP中require、require_once、include、include_once的区别 前言 不知道有没有人和我一样,在说起这个四个语句有何不同的时候,能娓娓道来。但是真正在实际开发中,到底选择哪一个,要不要使用require()类似这种带括号的用法,能去正确地选择使用并且说出充分理由,成
阅读全文
摘要:psr规范 PSR是由FIG这个组织制定的PHP规范,官网是 www.php-fig.org 1、PSR-0:自动加载 PSR-0 是FIG出的第一套规范,主要是制定了一些自动加载标准。不过 PSR-0 已经被标记为 Deprecated(已弃用),自动加载的新规范为 PSR-4 在Composer
阅读全文
摘要:CGI、FastCGI、PHP-CGI与PHP-FPM的概念以及各个之间的关系 概要 在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM、FastCGI和CGI 这几个概念。如果对它们一知半解,很难搭建出高性能的服务器。接下来我们就以图形方式,解释这些概念之间的关系。 一、客户端请求
阅读全文
摘要:PHP垃圾回收机制(GC) 前言 垃圾回收是一个多数编程语言中都带有的内存管理机制。与非托管性语言相反:C, C++ 和 Objective C,用户需要手动收集内存,带有 GC 机制的语言:Java, javaScript 和 PHP 可以自动管理内存。 下面是阅读 《官方手册-垃圾回收机制》后,
阅读全文
摘要:PHP中的trait 一、前言 自PHP 5.4.0起,PHP 实现了代码复用的一个方法,称为 trait。trait其字面意思是"特性"、"特点"。使用Trait关键字,可以为PHP中的类添加新的特性。 trait 是一种为类似 PHP 的单继承语言而准备的代码复用机制。在PHP中,只能实现单继承
阅读全文
摘要:PHP闭包(Closure) 闭包(Closure)又叫做匿名函数,也就是没有定义名字的函数。 PHP 5.3开始,新开放的闭包语法中, 我们就是用use来使用闭包外部定义的变量的。简单来说就是将作用域外的变量通过use中的参数进行传递到匿名函数中来使用。 例一:匿名函数中的使用 例二:图中是lar
阅读全文
摘要:PHP常用数组函数 PHP中有一些常用的数组函数,最好能记忆下来。能帮助我们事半功倍,让代码更加简洁。 1、array_diff( ) 1)array_diff(array1,array2,array3...) 其中array3为可选参数。该函数用于比较两个(或更多个)数组的键值,并返回差集。 2)
阅读全文
摘要:PHP类型约束 导语 类型约束,即定义一个变量的时候,必须指定其类型,并且以后该变量也只能存储该类型数据。 PHP作为弱类型语言,其特点是无需为变量指定类型,而且在其后也可以存储任何类型,但是在PHP的新语法中,在某些特定场合,针对某些特定类型,也可进行语法约束。PHP 5开始,在面向对象中,为方法
阅读全文
摘要:PHP的基础知识(二) 在OOP编程中,有一些基本的概念容易弄错或者混淆,在这里也记录一下。 1. static关键词 static可以用来声明类属性或方法,但是不能用来声明类,静态属性和方法都是属于类的。静态属性不能通过对象访问,但静态方法可以通过对象访问。 (1) 静态变量 静态变量属于静态存储
阅读全文