43 16 11 8 8 6 5 3 3 2 2 2 2 1 1 1 1 1 1 php 中的文章

广度优先搜索 PHP 实现

直接上代码了,注释都在代码里面了。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 <?php /** * 广度搜索 * * 你的朋友关系,以及朋友的朋友的关系,查看你的朋友或者朋友的朋友是不是包含 m 结尾的名字 */ // 需要检索的数组 $graph = []; $graph['you'] = ['alice', 'bob',……

阅读全文

给博客升级成功了

话说这次升级还是比较坑的,踏了以前注意过的坑。 比如说 config:cache 以后读取 env 失败的问题, 参见 https://laravel-china.org/topics/3362/laravel-use-env-to-read-the-environment-variable-null 还有 https 的问题,不过总算是搞定了,接下来还有几个问题,小调整一下就 ok 了,距离上次升级博客已经过去了一年,现在看来,这一年,还是进步了不少东西的。继续加油吧……

阅读全文

PHP 细节补全计划:引用

图片alt

最近在公司比较忙,以前有空闲的时候没有发现的东西,反而再忙的时候会加深体会。所以就动了心思准备写一个 php 细节补全的系列,不知道能写多少,慢慢来吧,这个就是第一篇了。

其实,平时我个人觉得再使用引用的时候机会并没有那么多,但是呢,引用这个东西是绝对不可以忽略的。

引用平时就我个人来说使用的场景有如下几个:

  • 有批量处理数组数据的时候会使用引用,这样再方法里面就不用在单独返回了,比较省事
  • 再有递归调用的时候也会使用,但是使用的时候需要注意小心踩坑

剩下的貌似就不是很多了,但是这两天看过几个面试题,让我平时没注意的一些东西或者说没有深入考虑的东西,有了更深入的理解。

先看下面这个题:

……

阅读全文

Slim Framework中间件的分析

最近也在分析中间件的东西。翻看了一下 laravel 的实现。但是 laravel 的实现很复杂,其实也不是很复杂,就是它的结构么,跳来跳去的,所以最后还是看了slim,毕竟简单。容易分析。 通过源码我可能得知有一个 MiddlewareAwareTrait 这个 Trait,然后由 App 来 use 这个 trait。 这里面有3个方法,分别是 addMiddleware、……

阅读全文

通过快排和归并排序思考分治法

话说以前看过很多算法相关的书,大部分讲的都很模糊,然后直接上代码,当时看似理解了,可是时间一长就忘光光了,以前看书学习的都是如何去做,而自己也没有深入的思考过为何这么做,单纯的就是背下来那种。当学习到一定程度之后,发现基础知识还是非常重要的。 今天要说的就是分治法,什么是分治法,就……

阅读全文

Php依赖注入容器Pimple的笔记

话说许久没有写技术类的笔记了,也该写点东西了,距离上次说 container 已经过去4个月了,期间也一直在学习,但是不知道写点什么好,说实话还是很怀念 14 年下半年,那半年的进步真的很大,那时候自己愿意看东西,也愿意写东西,也许写东西能让自己进步更快吧,所以17年了也应该继续进步了,否则问题大大的啊,……

阅读全文

从权限控制到合理分解系统的思考

本来这篇文章想写一个不利用轮子在laravel上实现rbac的东西的,其实也就是自己造一个rbac的轮子。 但是,最后自己还是懒了,不想写代码,所以呢,聊聊从权限管理让我思考的分解系统的一些东西吧,其实也不算是分解系统,仅仅就是想说说松耦合的事情。 曾经我以为我自己了解的不够多,但是……

阅读全文

我所理解PHP中的container

又用了一次老图片,这个图片我个人真的炒鸡喜欢呢。 说正事吧,10天前,我开始着手写自己的php框架,目前仅仅把路由和mvc中的vc实现了出来,说实话写框架真的不是那么简单的事情,需要考虑的东西要比平时写逻辑多得多。也可能是我考虑的太多,就是那些有的没的很容易中断我的思路,而且总想用……

阅读全文

[转载] php正则表达式实现@某人

PHP正则表达式实现@某人 if(preg_match_all(’#@\w+#u’, ‘@张全蛋 含泪质检@三星Note7 被炸飞,听说@炸机 跟@啤酒 更配哦!’, $matches)) { var_export($matches); } //输出 array ( 0 => array ( 0 => ‘@张全蛋’, 1 => ‘@三星Note7’, 2 => ‘@炸机&rsquo……

阅读全文

PHP归并排序

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 <?php function sortArr($arr) { if (count($arr) < 2) { return $arr; } $mid = count($arr) / 2; $arr1 = array_slice($arr, 0, $mid); $arr2 = array_slice($arr, $mid, count($arr)); $arr1 = sortArr($arr1); $arr2 = sortArr($arr2); return mergeArr($arr1, $arr2); } function mergeArr($arr1, $arr2) { if (!is_array($arr1)) { $arr1[] = $arr1; } if (!is_array($arr2)) { $arr2[] = $arr2; } $i =0; $j = 0; $arr1Length = count($arr1); $arr2Length = count($arr2); $returnArr = []; while($i < $arr1Length && $j < $arr2Length) { if($arr1[$i] > $arr2[$j]) { $returnArr[] = $arr2[$j]; $j++;……

阅读全文