- PHP 转 Node 笔记(一 谈谈两者的差异) 12-17
- 12月编程语言排行榜出炉,C语言大爆发,PHP快跌破 12-17
- ThinkPHP5.0的数据库架构设计 12-17
- 8个测试工具来提升你的PHP代码质量 12-17
- PHP三种排序算法 12-17
- 识消息队列之安装RabbitMQ的PHP扩展-AMQ 12-17
- PHP处理base64上传的图片 12-17
- Linux下 php如何连接并使用sql serve 12-17
- PHP如何提取纯文本中的链接 12-17
- JAVA看了会哭泣,PHP看了会沉默,一行PYTHO 12-17
PHP 转 Node 笔记(一 谈谈两者的差异)
发布者: superzhang | 发布时间:2017-12-17前言
本文章连载更新,以记录我的学习历程和踩过的坑,比较 Node 与 PHP 在各种情景下的差异,分享一些实用代码
根据我的个人情况,Laravel 使用者是最核心的面向人群,本系列的大部分代码都是在 Node 下去实现传统后端语言或是框架的特性,譬如 Laravel 的 路由/控制器/中间件/依赖注入 等(见 Varal),以及最近准备实现的 Laravel 的 Collection 和 ORM
首先容我声明下:
PHP 是世界上最好的语言
这并不是开玩笑,而是在我刚刚接触 Node 时真实的感受
1. 同步与异步
第一个差异也是最重要的一个差异,对于习惯了同步开发的程序员来说最影响效率的差异。 作为 PHP 出身的我刚接触 Node 时,因为搞不懂“为什么 Node 代码里到处都是回调”,“为什么不能用全局函数”纠结了大半天,而这两个问题在搞懂了同步异步的差异后自然就清晰了。
PHP 是同步的(当然现在也能实现异步编程,如 Swoole,并且性能不比 Node 差),一般依赖 Apache 或是 Nginx 作为 Web Server,每个请求都发生在由 php-fpm 管理的独立的 PHP 进程上,请求结束后释放加载的资源,所以无论是全局变量还是全局函数,都只会对当前请求有
12月编程语言排行榜出炉,C语言大爆发,PHP快跌破前十!
发布者: superzhang | 发布时间:2017-12-17TIOBE 12月编程语言排行榜出炉了,这次的榜单让我们感到有点意外。
在此次的编程排行榜上,排在前三名的分别是Java、C语言、C++语言。
C语言似乎是王者归来了,在榜单上表现的相当的强势。
被称为”世界上最好的语言”的php差点跌破前十。
对于此次编程语言排行榜单,网友们也纷纷发表了看法:
网友一:php程序员在此!!我不管,反正php是世界上最好的语言!
网友二:C语言怎么突然又冒出来了?
网友三:Java比例一直在下降,怎么还不见名次下降。
网友四:php说任凭你们随便排名,反正我东方不败。
0、C语言
虽然C语言自15年11月开始,开始呈现了下降的趋势,甚至跌破了10%。
但是,今年却是C语言王者归来的一年。因为低端软件在汽车行业的增长,并且有小型软件设备的普及,C语言在2017年变得非常流行,有望收获“2017 年度编程语言”的最佳得主。
ThinkPHP5.0的数据库架构设计
发布者: superzhang | 发布时间:2017-12-17使用框架开发应用,一般不需要直接操作数据库,而是通过框架封装好的数据库中间层对数据库进行操作。这样的好处主要有两个:一是简化数据库操作,二是做到跨数据库的一致性。这种设计的中间层通常称之为数据库访问抽象层,简称数据访问层(DAL),ThinkPHP5的数据访问层是基于PHP内置的PDO对象实现。一般抽象层本身并不直接操作数据库,而是通过驱动来实现具体的数据库操作。ThinkPHP5.0的数据库设计相比之前版本更加合理,数据访问层划分的更细化,把数据访问对象分成了连接器、查询器、生成器等多个对象,并通过数据库访问入口类统一调用,分工更明确,各司其职,欲知详情且听我慢慢道来。ThinkPHP数据访问层设计示意图:
平常我们的数据库操作使用的类库一般都是数据库的入口类think\Db。这个类非常的简单,主要就是一个connect方法,根据数据库配置参数连接数据库(注意这里的连接并非真正的连接数据库,只是做好了随时连接的准备工作,只有在实际查询的时候才会真正去连接数据库,是一种惰性连接)并获取到数据库连接
8个测试工具来提升你的PHP代码质量
发布者: superzhang | 发布时间:2017-12-17为了编写高质量的代码,有必要考虑测试代码,而不是TDD(测试驱动开发)。但是,虽然有几个PHP测试工具需要的功能,但是选择一个不太重的合适的工具是很困难的。
所以我会在2017年推出8款测试工具推荐。
PHPUnitPHPUnit是一个广泛使用的测试框架。由塞巴斯蒂安·贝格曼(Sebastian Bergmann)于 2014年开发,最新版本是第6版。PHP 7是必需的。
behatbehat是根据规格创建验收测试的框架。它以生成自然句子的描述性文本而闻名。Cucumber的官方PHP实现是Behat。
Behat 初学者的教程。在下面的示例中,您可以看到预期行为如何表达。
Feature: Listing command In order to change the structure of the folder I am currently in As a UNIX user I need to be able see the currently avaPHP三种排序算法
发布者: superzhang | 发布时间:2017-12-17冒泡排序:
<?php
//交换排序(冒泡排序)
function getpao($arr)
{
$len=count($arr);
//设置一个空数组 用来接收冒出来的泡
//该层循环控制 需要冒泡的轮数
for($i=1;$i<$len;$i++){ //该层循环用来控制每轮 冒出一个数 需要比较的次数
for($k=0;$k<$len-$i;$k++){
if($arr[$k]>$arr[$k+1]){
$tmp=$arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$tmp;
}
}
}
return $arr;
}
$arrBeSort = array(11,5,9,7,2,6,1,4,80);
$a
识消息队列之安装RabbitMQ的PHP扩展-AMQP
发布者: superzhang | 发布时间:2017-12-17本文主要介绍RabbitMQ的安装,RabbitMQ的简介及应用场景,将会在下篇文章中介绍。
(1)安装依赖库rabbitmq-c,下载地址:https://github.com/alanxz/rabbitmq-c/archive/v0.8.0.tar.gz,执行:
wget https://github.com/alanxz/rabbitmq-c/archive/v0.8.0.tar.gztar zxvf v0.8.0.tar.gzmv rabbitmq-c-0.8.0 rabbitmq-c(2)下载最新版的codegen配件
wget https://github.com/rabbitmq/rabbitmq-codegen/tarball/mastertar zxvf mastermv rabbitmq-* codegen将(2)中的codegen文件夹覆盖(1)中rabbitmq-c文件夹下(覆盖原有codegen文件夹)
(3)确保一些必
PHP处理base64上传的图片
发布者: superzhang | 发布时间:2017-12-17什么是base64图片上传,不过就是在客户端把图片用base64加密变成了字符串而已;我们在服务器端只需要去除开头的标志,把剩余的进行base64解码就得到了原来的图片;保存到指定位置即可。
了解了原理之后,开始我们的代码实战阶段,代码如下:
/**
* base64图片上传文件
* @param string $base64Img base64格式的图片字符串
*
* @return bool|string
*/
function base64ImgUpload($base64Img) {
if(empty($base64Img)) return false;
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64Img, $result)) {
// 获取后缀名称
$ext = $result[2];
// 设置保存的图片名称
$name = md5('johnxu_' . mt_rand(1000, 9999) . time() . uniqid()) . ".{$ext}";
// 设置图片保存位置
Linux下 php如何连接并使用sql server 全过程
发布者: superzhang | 发布时间:2017-12-17工作中用到linux连接sqlServer,记录下来。
环境:php5.6.32 centos6.8
1、下载
wget http://hk1.php.net/get/php-5.6.32.tar.gz2、解压
tar zxvf php-5.6.32.tar.gz3、进入扩展目录
cd php-5.6.32/ext/mssql4、安装依赖
yum install freetds freetds-devel5、安装扩展
/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-libdir=lib64makemake install6、添加扩展到php.ini
vim /usr/local/php/etc/php.ini底部新增
extePHP如何提取纯文本中的链接
发布者: superzhang | 发布时间:2017-12-17今天给大家分享一个如何通过PHP技术提取出文本中的超链接。详情见代码:
<?php
$pattern = '/((https:|http:)\/\/[A-Za-z0-9_#?.&=\/]+)([\x{4e00}-\x{9fa5}])?(\s)?/u';
if (preg_match_all($pattern, $str, $matchs)) {
print_r($matchs); // 自己打印结果来取出自己想要的内容即可
} else {
echo 'sorry, do not match anything.';
}
JAVA看了会哭泣,PHP看了会沉默,一行PYTHON代码,做些神奇的事
发布者: superzhang | 发布时间:2017-12-17人生苦短,我用python,相信各位玩蛇的大佬对这句话肯定心服首肯,python作为一个公认简洁的编程语言被大家所喜爱,在python的命令行控制台输入import this 你会看到一段神奇的东西!
翻译如下:
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测
<