php技术博客

记录php相关学习知识及开发示例、疑难问题等

php基础之Trait

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。 多个 trait 通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。多个trait间有方法名重复解决方法:使用insteadof 来指定使用哪个trait下对应的方法。class Base{     public function sayHello(){         echo 'Hello';     } } trait SayWorld{ &nbs

如何通过php判断一个文件哪个平台编辑的

我们知道文件在win\linux\mac平台下换行对应的字符是不一样的,我们通过这个来判断一个文件通过那个平台编辑的。虽然不一定准确,但可以分析出文件对应的换行符$file="demo.txt"; $cc=file_get_contents($file); if(strpos($cc,"\r\n")){ echo ' windows (CR LF)'; }elseif(strpos($cc,"\n")){ echo ' unix/linux (LF)'; }elseif(strpos($cc,"\r")){ echo ' mac (CR)'; }else{     echo PHP_OS; }为什么我们要知道,属于哪个平台了,因为部分函数对这块没有考虑完全。如 openssl_pkey_get_public 函数,mac下密钥文件解析就有问题,解析错误返回

如何通过php判断一个文件或字符串的编码

经常遇到编码转换的问题,我们怎么知道一个文件或字符串的编码了,可以通过mb_detect_encoding 函数来监测$res = mb_detect_encoding($cc,'ASCII,UTF-8,GB2312,EUC-CN,GBK,BIG5'); if($res=='ASCII'){     echo 'ASCII编码'; }elseif($res=='GB2312' ||  $res=='EUC-CN' || $res=='GBK'){     echo '简体中文'; }elseif($res=='BIG5'){     echo '繁体中文'; }elseif($res=='UTF-8&#39