php设计模式(四)工厂方法模式

上篇文章我们讲过简单工厂是违反开放封闭原则的;而工厂方法模式就可以规避此问题;它需要定义工厂的接口;让工厂的子类来确定实例化哪一个具体的产品类;延迟了类的实例化; 应用场景要实例话的对象充满不确定性可能会改变的时候;要创建的对象的数目和类型是未知的; 结构1个 interface 或者 abstract 产品父类;多个实现 interface 或者继...
阅读全文

php设计模式(三)简单工厂模式

本来这篇文章早就写完了;最先准备用 IOS 和 Android 举例;但是后来考虑到工厂方法和抽象工厂模式;又用小米和华为重写了一遍;这样可以方便的扩充低配版的红米和荣耀;但还是觉得讲的不清楚;最后采用了程杰老师《大话设计模式》书中的加减乘除举例;把 C 的代码转化并加上自己的理解写成 PHP 代码;在此感谢程杰老师;反复写了3种示例终于把这篇文章定稿了;...
阅读全文

php设计模式(二)单例模式

应用场景:数据库连接这种比较耗费资源的操作;我们希望整个应用只实例化一个; 结构:4私1公;私有化构造方法: 防止使用 new 创建多个实例;私有化克隆方法: 防止 clone 多个实例;私有化重建方法: 防止反序列化私有化静态属性: 防止直接访问存储实例的属性 示例```php<?phpnamespace Baijunyao\Design...
阅读全文

php设计模式(一)序言

随着项目代码越来越庞大;维护的成本甚至比开发的成本还高;这时候最怕的一句话就是"需求又变了" ;为了应对各种变动;为了编写更高质量的代码;这就需要我们掌握设计模式;设计模式并不是被创造出来的;而是程序猿前辈们在开发过程中实验总结出来的;后来由GOF整理成《Design Patterns: Elements of Reusable ObjectOriented...
阅读全文

laravel下elasticsearch+analysis-ik实现中文全文搜索

这篇文章需要建立在 elasticsearch 已经配置完成的前提下;如果还没安装 elasticsearch ;请先出门左转 ;新建一个项目演示;```bashlaravel new elasticsearch```创建一个文章表和文章模型;```bashphp artisan make:model Models/Article m```添加文章标...
阅读全文

elasticsearch和analysis-ik的安装使用

主要介绍了两组全文分词方案;这套组合对于博客这类的小项目基本够用了;但是如果最求性能追求更强大的功能的话;那更优的选择就非 elasticsearch 莫属了;elasticsearch 需要 java8 以上;这里安装最新版的 java10 ;下载 jdk```bash wget nocookies nocheckcertificate header "Cooki...
阅读全文

laravel下TNTSearch+jieba-php实现中文全文搜索

上篇文章我们简单介绍了全文搜索的方案;;TNTSearch+jiebaphp这套组合可以在不依赖第三方的情况下实现中文全文搜索;特别的适合博客这种小项目;我新建一个项目用于演示;```bashlaravel new tntsearch```创建一个文章表和文章模型;```bashphp artisan make:model Models/Article m...
阅读全文

全文搜索和中文分词

搜索基本上是网站或者 app 必备的功能了;可是同样是搜索;实现起来也都能是尼古拉斯凯奇和尼古拉斯赵四间的差距;一般的搜索是 sql 模糊查询级别的;比如说文章中有 php是世界上最好的语言 这句话;如果我们用 sql 的 like 的 % 模糊查询的话;搜索词必须要连贯切一字不差;可以搜 `like 'php是%'` 也可以搜 `like '%最好的语言'` 或者 `...
阅读全文

开源项目系列之laravel-print以简洁的方式打印数据

laravel 中有个 `dump` 可以用来打印数据;但是也存在这很多的不便利;咱一条一条来吐槽哈; 撒气爱子: 1. 打印出来的数据默认是折叠的;我打印数据果断是要看具体内容的;然鹅这还需要我们手动层层点开;想想也是心累;2. 打印模型时展示了太多的属性;当我们一层一层的剥开它的心后;终于才能在 `attributes` 中找到我们想要的...
阅读全文

如何正确的下载安装使用别人的laravel项目?

laravel 作为最流行的 php 框架;自然少不了很多基于 laravel 开发的项目;不过很多项目因为还处于开发中;或者其他原因并没有写安装文档;举个反面栗子;比如说我的 ;这种一般就是面向 laravel 开发者的;需要有 laravel 的基础才能顺利的安装使用;还有很多已经比较成熟的项目;一般都是有比较详细的安装文档的;举个正面的栗子;...
阅读全文