php
皇小邪
码而不思则罔,思而不码则殆
展开
-
php实现简单工厂模式、工厂方法模式与抽象工厂模式的区别
PHP工厂模式概念:工厂模式是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。根据抽象程度不同,php工厂模式分为:简单工厂模式、工厂方法模式和抽象工厂模式简单工厂模式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .原创 2020-06-17 10:14:26 · 379 阅读 · 0 评论 -
PHP设计模式-三种工厂模式的区别
工厂模式在讲解工厂模式之前,我们先来探讨一些问题,研究是为什么会出现工厂模式的,工厂模式有什么优缺点。以超人为例子:有一个超人,超人一定有对种超能力;于是我们建立一个超人类namespace Factory;class Superman{ }同时创建超能力类并给超人添加超能力;namespace Factory;class Flight{ /** * 能力的名称 * * @var */ ..原创 2020-06-16 14:00:54 · 289 阅读 · 0 评论 -
php常用几种设计模式的应用场景
php常用几种设计模式的应用场景1.单例设计模式所谓单例模式,即在应用程序中最多只有该类的一个实例存在,一旦创建,就会一直存在于内存中!单例设计模式常应用于数据库类设计,采用单例模式,只连接一次数据库,防止打开多个数据库连接。一个单例类应具备以下特点:单例类不能直接实例化创建,而是只能由类本身实例化。因此,要获得这样的限制效果,构造函数必须标记为private,从而防止类被实例化。需要一个私有静态成员变量来保存类实例和公开一个能访问到实例的公开静态方法。在PHP中,为了防止他人对单例类实例克原创 2020-05-27 16:24:24 · 296 阅读 · 0 评论 -
消息队列使用的四种场景介绍
消息队列使用的四种场景介绍消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式原创 2020-05-25 13:50:35 · 300 阅读 · 0 评论 -
PHP之Static(静态)关键字
声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。如果没有指定访问控制,属性和方法默认为公有。由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。静态属性不可以由对象通过 -> 操作符来访问。用静态方式调用一个非静态方法会导致一个E_STRICT级别的错误。就像其它所有的 PHP 静态变量一样,静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能...原创 2020-05-24 20:51:38 · 181 阅读 · 0 评论 -
PHP之Final 关键字
如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。注意:属性不能被定义为 final,只有类和方法才能被定义为 final。示例1: Final 方法<?phpclassBaseClass{publicfunctiontest(){echo"BaseClass::test()called\n";}finalpublicfunctionmoreTesting(){...原创 2020-05-24 20:39:08 · 194 阅读 · 0 评论 -
PHP连接MySQL数据库的三种常用方式(mysql、mysqli、pdo)
PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的。因此这个扩展虽然可以与MySQ...原创 2020-04-26 20:35:24 · 306 阅读 · 0 评论 -
Laravel的ORM模型的find(),findOrFail(),first(),firstOrFail(),get(),find(),list(),toArray()之间的区别是什么?
find($id)需要一个id并返回一个模型。如果不存在匹配的模型,则返回null。findOrFail($id)需要一个id并返回一个模型。如果不存在匹配的模型,则会引发错误, 它会抛出一个error。first()返回在数据库中找到的第一条记录。如果不存在匹配的模型,则返回null。firstOrFail()返回在数据库中找到的第一条记录。如果不存在匹配的模型,则会引发错误。它会抛出一个er...原创 2019-12-09 14:05:12 · 499 阅读 · 0 评论 -
laravel接入阿里巴巴短信
1、在laravel中安装SDK。composer require alibabacloud/client2、在config目录下创建sms配置文件,用于设置AccessKeyID、AccessKeySecret等数据。<?phpreturn [ 'AccessKeyID' => env('AccessKeyID','你的AccessKeyID'), ...原创 2020-06-25 12:18:52 · 869 阅读 · 0 评论 -
laravel 配置路由 api和web定义的路由的区别
1、路由经过中间件方面不同打开kerenl.php就可以看到区别 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueue...原创 2019-12-05 09:15:35 · 2028 阅读 · 0 评论 -
Laravel - 验证码(captcha)
Laravel - 验证码(captcha)安装步骤: 首先,登录网址packagist.org查找laravel captcha,找到mews/captcha,根据 packagist 上的使用方法一步步来实现验证码的安装。 composer 安装:composer require mews/captcha 注册providers (config/app.php),在这个...原创 2019-12-04 17:01:20 · 992 阅读 · 0 评论 -
Smarty中css/js {}冲突
源代码:Smarty中css/js {}冲突:解决方案:1、在{}中两端加空格,即{ .......}2、修改Smarty解析的{},例如:改为{@@@ @@@}等。3、使用{literal} {/literal}将css/js包裹其中即可...原创 2019-11-24 20:17:35 · 181 阅读 · 0 评论 -
centos7编译安装swoole4
步骤1:下载源码包进入我的工具目录(自己定义的专门放软件工具包的目录tools)运行命令: cd /home/tools运行命令: git clonehttps://gitee.com/swoole/swoole.git步骤2:进入软件包目录运行命令:cd swoole通过php的工具包添加扩展,运行命令:phpize(如果提示没有找不...原创 2019-11-17 18:50:12 · 462 阅读 · 0 评论 -
nginx部署laravel报错502
错误详情(php.ini的bug调试打开,默认是关闭的)Laravel运行环境 Linux NginxWarning: require(): open_basedir restriction in effect. File(/home/wwwroot/ssmanager/vendor/autoload.php) is not within the allowed path(s): (/ho...原创 2019-11-17 18:32:27 · 4046 阅读 · 0 评论 -
Supervisor给laravelS添加守护进程
从网上搜了好多这类问题,大多说了Supervisor添加时报错:“守护进程失败!,文件执行结束太快!”等问题,也不给解决方案,然并没毛用。我是在宝塔环境下配置的,centos、ubuntu等都一样第一步:安装基础环境在宝塔上安装lnmp环境,以及基础配置、安装laravel、composer安装laravelS、安装Swoole4等。在这里不再赘述。我们从安装Supervisor开...原创 2019-11-13 11:13:57 · 1491 阅读 · 0 评论 -
composer require报错:Installation failed, reverting ./composer.json to its original content.
一、前言laravel-swoole基于Swoole的高性能HTTP服务器。加快Laravel 和 Lumen 应用。二、解决过程在安装laravel-swoole的第一步就开始报错; composer require swooletw/laravel-swoole1、composer版本不够?这个可能性比较小,但是试一下没坏处怀疑是自己本地composer...原创 2019-11-11 09:59:16 · 19328 阅读 · 0 评论 -
laravel修改命名空间、目录名
如果你想修改命名空间的话,执行:php artisan app:name Aaa(你想要的命名)如果你同时想把app目录也改掉的话,进入composer.json文件,将app改成你想要的名字之后,运行 composer dumpautoload 更新命名空间映射...原创 2019-11-08 09:24:25 · 1151 阅读 · 0 评论 -
php抽象工厂模式
抽象工厂:适用于生成多个产品族、多个产品树的情景(产品族[appt,ttd,contact],产品树[Bloggcal,megaCal])。相比于工厂模式,更容易扩展添加新的产品族。实例:<?php/** * 抽象工厂模式 */class Mysql{ public function __construct() { echo "Mysql ...原创 2019-10-29 19:46:49 · 128 阅读 · 1 评论 -
php工厂模式
一、什么是工厂模式? 一个类通过本身的静态方法来,实例化一个类并返回一个实例对象;二、工厂模式特点? 类命名特点:nameFactory eg: class mysqlFactory{} 【这是为了规范,当然也去起其他任意名字】 静态方法名称:static public function factory($class_name){} 【静态方法是类与外界的接口, 返回...原创 2019-10-29 19:26:03 · 84 阅读 · 0 评论 -
php开发PSR基础框架
在实际开发中,不论是使用laravel、thinkphp、yii等,还是自己搭建MVC框架,都会使用到自动加载类的情况,都会使用到namespace + spl_autoload_register()来引用类库,避免使用require/include来加载类库。本例将使用namespace + spl_autoload_register()自动加载自定义类,首先必须遵守:1、类文件全部使用...原创 2019-10-29 15:22:13 · 274 阅读 · 0 评论 -
Deprecated: __autoload() is deprecated, use spl_autoload_register()
官网是这样说的:spl_autoload_register(PHP 5 >= 5.1.0, PHP 7)spl_autoload_register — 注册给定的函数作为 __autoload 的实现说明spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $p...原创 2019-10-28 19:39:14 · 3949 阅读 · 0 评论 -
centos7安装composer
1、使用命令下载curl -sS https://getcomposer.org/installer | php2、下载之后设置环境变量mv composer.phar /usr/local/bin/composer3、修改权限,否则执行会出错chmod -R 777 /usr/local/bin/composer...原创 2019-10-22 09:58:16 · 107 阅读 · 0 评论 -
centos7手动安装nginx php7 mysql5.7
请参照:https://segmentfault.com/a/1190000011299586转载 2019-10-21 21:12:57 · 91 阅读 · 0 评论 -
变量类型
<?php $sum = 100; echo gettype($sum);// gettype 测类型echo""; $sum = 1.22; echo gettype($sum);echo""; settype($sum,"int");// settype 更改类型 echo gettype($sum);?>原创 2018-01-14 16:50:38 · 122 阅读 · 0 评论 -
isset、unset、empty
<?php $num = 5;echo isset($num); // isset 判断一个数是否存在。是,则输出1;否,则输出空unset($num); // unset 销毁一个数echo isset($num); $a='5';echo empty($a); //empty 变量为空或0时,返回1 ;否则返回空?>原创 2018-01-14 17:00:46 · 162 阅读 · 0 评论 -
单引号与双引号的区别
<?php $name= "小亮"; $class = "网工一班";echo "他是$name,$class.";//或者echo "他是$name,"."$class.";//字符串之间用 . 连接 //或echo"";echo"小明是个三好学生,\n但是他偶尔也很调皮!";// 是在网页上换行, 而 \n 是在源代码上换行echo "";echo原创 2018-01-14 17:03:33 · 648 阅读 · 0 评论 -
基本运算符
<?php $a = 1; $b = 2; echo $a == $b; // 等于,两边的类型可以不同echo''; echo $a === $b;// === 恒等 ,两边不光数值相同,类型也必须相同echo''; echo $a&&$b;// $$/and 与、 ||/or 或、 ! 非。echo $a||$原创 2018-01-14 17:10:51 · 132 阅读 · 0 评论 -
rand() 与mt_rand()的区别
<?phpecho rand(0,100); //rand 可以随机产生min-max间的其中一个数?><?phpecho mt_rand(0,100); //mt_rand 可以随机产生min-max间的其中一个数,但他的速度较rand快?>原创 2018-01-14 17:14:41 · 1271 阅读 · 0 评论 -
数学运算
<?php $a = -6; echo abs($a); // abs() 绝对值echo ''; $a = 5.66; echo floor($a); // floor() 舍去法取整,结果仍为double型 echo gettype(floor($a));echo ''; echo ceil($a); //原创 2018-01-14 17:16:12 · 174 阅读 · 0 评论 -
一维数组的创建及输出
<?php $name = array('赵','钱','孙','李','周','吴','郑','王');print_r($name); // print_r() 可以输出数组中所有元素echo $name[4]; // 输出其中一个echo ''; $num = range(1,10);// range 范围内数组 $num1 = range(原创 2018-01-14 17:22:15 · 2849 阅读 · 0 评论 -
array_unique()与array_flip()
<?php $number = array(1,2,3,4,5,9,6,3,2,1,4,5,8,7,0,2,1); print_r($number).''; $a = array_unique($number); //array_unique 删除数组中重复的元素 print_r($a).''; $name = array('赵云'=>'3原创 2018-01-14 17:27:51 · 872 阅读 · 0 评论 -
二维数组的创建及输出
<?php $sex = array( array('赵','钱','孙','李'), array('周','吴','郑','王') ); // 二维数组的输出 // 方法一,即cout()for($i = 0;$i count($sex);$i++){ for($j = 0;$j count($sex[$i]原创 2018-01-14 17:33:46 · 1086 阅读 · 0 评论 -
自定义函数
自定义函数格式:function 函数名(变量){内容}自定义函数可以返回整型、浮点型等,注:可以返回一个数组。代码如下:1、返回值为数组function myself($name,$age,$class){ return array($name,$ages,$class);}$a = myself('小亮','20','网工一班');fo原创 2018-01-15 14:34:31 · 282 阅读 · 0 评论 -
文件的输出2
<?php $array = file('file.txt'); // file — 把整个文件读入一个数组中 echo $array[2];echo ''; readfile('file.txt'); //readfile — 输出文件echo ''; echo file_get_contents('file.txt'); //file_原创 2018-01-15 14:35:38 · 112 阅读 · 0 评论 -
文件的输出1
<?php $fp = fopen('file.txt','r');echo fgetc($fp).''; // fgetc - 输出一个字符echo fgets($fp).''; // fgets - 输出一行字符串echo fgetss($fp).''; //fgetss — 从文件指针中读取一行并过滤掉 HTML 标记echo fread原创 2018-01-15 14:39:33 · 168 阅读 · 0 评论 -
$_GET 与 $_POST 的区别
一般情况下:1、$_POST用于表单之中,而$_GET用于超链接之中。2、$_POST对数据来说比较安全,而$_GET就略显不足。代码如下: $_POST 用法:method="post" action="text17.php"> 姓 名:type="text" name="username"/> 密 码:type="password" name="pass原创 2018-01-14 19:47:06 · 1118 阅读 · 0 评论 -
require与include
1、 require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误 include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。 2、 require通常放在PHP程序的最前面,PHP程序在执行前,就会先读入require所指定引入的文件,使它变成PHP程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。原创 2018-01-15 15:06:37 · 198 阅读 · 0 评论 -
日期与时间1
1、checkdate()验证一个日期是否合法(顺序:月、日、年),正确:返回1;错误:返回空echo checkdate(1,15,2018);2、date()的用法<?php echo date('Y'); // 大写 Y 表示四位当地年份、小写 y 表示两位当地年份 echo date('y'); echo date('M'); /原创 2018-01-15 16:09:45 · 139 阅读 · 0 评论 -
日期与时间2
1、time()获得当前的时间戳<?phpecho time(); echo date('Y-m-d H:i:s',time()+60*60*8); // 时间戳转化为时间,(这里指国内时间)?>2、输出当前时间的方法<?php // 方法一echo date('Y-m-d H:i:s',ti原创 2018-01-15 16:19:47 · 164 阅读 · 0 评论 -
Cookie1
1、setcookie()创建一个客户机的Cookie文件。格式: setcookie(参数1,参数2,参数3);参数1:代表Cookie的名称参数2:代表Cookie的内容参数3:代表Cookie的保存时间 (若不写,则默认时间为0)相关代码如下:setcookie('name','666',time()+(7*24*60*60)); // 设置其原创 2018-01-15 17:30:44 · 342 阅读 · 0 评论