PHP
Dev-Liangjian
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
遍历PHP数组的几种方式
遍历数组是最常见的操作啦。1. foreach$arr = ['a', 'b', 'c']; foreach ($arr as $key => $value) { $arr[$key] = $value . '_i';} print_r($arr); // ['a_i', 'b_i', 'c_i'];2. for不推荐使用。它的效率比不上foreach。而且写法上...原创 2019-05-17 11:12:53 · 785 阅读 · 0 评论 -
PHP接口interface
接口:参考:http://php.net/manual/zh/language.oop5.interfaces.php应用场景:将注册日志写入文件系统<?phpclass FileLogger{ public function save($message) { //将日志写入文件中 var_dump('log into file '. $message); }...原创 2019-01-12 17:22:22 · 464 阅读 · 0 评论 -
PHP抽象类
什么是抽象类?<?phpabstract class AbstractClass{ // 强制要求子类定义这些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public functi...原创 2019-01-12 16:48:36 · 932 阅读 · 0 评论 -
真正验证一个邮件地址的有效性
一个邮件地址是否有效关系一定程度上决定了这个用户是否是优质用户,或者说成为优质用户的潜质更大。所以在用户注册的时候,我们通常会绞尽脑汁来验证一个邮箱地址的有限性。本文并不是简单地讨论使用正则表达式来验证一个邮箱地址是否正确,而是希望通过更多的手段来真正验证一个邮箱地址的邮箱性。本文验证一个邮件地址有效性的内容包含以下几个内容:最常规的正则表达式的匹配邮件的 DNS 有效性检验 MX 记...原创 2019-01-12 10:11:15 · 9852 阅读 · 2 评论 -
laravel模型的scope前缀方法
Laravel中模型中可以定义scope开头方法,这类方法可以通过模型直接调用。这类方法也称作查询作用域参考文档:https://laravel-china.org/docs/laravel/5.6/eloquent例如, 你可能经常需要获取「受欢迎的」用户。要定义这样一个范围,只需要在对应的 Eloquent 模型方法前加入 scope 前缀。scope方法总是返回一个查询构造器实例。...原创 2019-01-10 19:49:31 · 1880 阅读 · 0 评论 -
PHP工厂模式
工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。关键思想:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 何时使用:我们明确地计划不同条件下创建不同实例时。 使用场景: 1、日志记录器:记录可能记录到本地硬盘、系...原创 2018-09-15 14:03:06 · 306 阅读 · 0 评论 -
PHP单例模式
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。单例模式属于创建型模式,它提供了一种创建对象的最佳方式。关键思想:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 何时使用:当您想控制实例数目,节省系统资源的时候。 **使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。 3、创建的一个对象需要消耗的...原创 2018-09-15 13:56:48 · 203 阅读 · 0 评论 -
PHP文件路径包含问题
别的编程语言在处理include中的相对目录时,都是以当前处理的文件作为基准。也就是说,如果A包含B,B包含C时,C再包含一个含相对路径的文件,那么路径是相对于C的。这样的处理很自然,符合人们的直觉,也便于开发出路径无关的程序包。但PHP并不是这样相对路径带来问题它优先相对工作目录来处理,并且如果路径中包含. …的话,则只相对于工作目录。也就是说当前的项目路径是工作目录(入口文件上的所在路径...原创 2018-09-24 14:37:02 · 768 阅读 · 0 评论 -
2019届新浪微博秋季校园招聘-PHP
问答题 1.简述建立长连接/短连接的步骤和使用场景2.请描述linux服务器上的目录结构及对应的作用3.写一段代码,使之能捕获fatal error , exception , notice , warning4.设计一个系统,有一大小为1GB的源文件mail.log中记录以下格式的数据,将其中信箱为@sina.com的地址筛选出来(可用内存512M) July@sina.com....原创 2019-04-09 00:18:13 · 461 阅读 · 0 评论 -
SQL注入
SQL注入利用现有应用程序,将(恶意)的SQL命令注入到后台数据库执行一些恶意的操作产生的原因程序开发过程中不注意规范书写SQL语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些SQL语句正常执行。防止策略严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害 检查输入的数据...原创 2018-09-15 19:34:02 · 378 阅读 · 0 评论 -
PHP命名空间的自动加载
什么是命名空间?参考:http://php.net/manual/zh/language.namespaces.rationale.php(PHP 5 &amp;amp;gt;= 5.3.0, PHP 7)什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件...原创 2019-01-13 12:41:13 · 995 阅读 · 0 评论 -
PHP的trait
什么是trait?自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。参考:http://php.net/traitsclass Article{ public function owner() { var_dump('this thing has owner'); }}class Comment{ public function own...原创 2019-01-13 18:34:11 · 152 阅读 · 0 评论 -
日期及时间处理包 Carbon 的简单使用
在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。1. 通过composer安装版本环境要求:1.x is compatible with PHP 5.3+.2.x version requires PHP 7.1.8+.composer require nesbo...原创 2019-05-01 10:59:19 · 4786 阅读 · 0 评论 -
PHP储备知识
PHP常见的运行模式CLI:就是命令行模式,参考链接:https://php.net/manual/zh/features.commandline.phpmod_php:即apache的php模块。把php嵌入到apache中,相当于给apache加入了解析php文件的功能CGI (不太了解)FastCGI(不太了解)...原创 2019-04-19 23:27:10 · 193 阅读 · 0 评论 -
如何将变量从PHP传递给JavaScript
如何将变量从PHP传递给JavaScript问题:我在PHP中有一个变量,我JavaScript代码中需要使用这个值,我如何将我的变量从PHP传递到JavaScript呢?实际上有几种方法来做到这一点。使用AJAX从服务器获取所需的数据。(推荐)将数据回传到某个位置,并使用JavaScript从DOM获取信息。将数据直接回传到JavaScript。(不建议使用)在这篇文章中,我们...转载 2019-04-20 23:12:44 · 2659 阅读 · 0 评论 -
100 个最常用的 PHP 函数
100 个最常用的 PHP 函数下面的列表是最常用的前100个 PHP 函数:它们是最常用的 PHP 中自带的函数。这些函数被命名使用,并从1到100进行排序。 其他的4500个函数现在还没在排名中。 下面频率列表表示在 PHP 代码中使用此函数的频率 : 参考资料来自于 1900 个 PHP 开源项目。 他们使用了 Exakat static analysis engine 静态分析引擎的 ...翻译 2019-03-28 11:12:39 · 320 阅读 · 0 评论 -
减少Laravel默认分页器模板中的链接数量
减少Laravel默认分页器模板中的链接数量laravel自带的分页链接太长怎么解决:翻译于https://joelennon.com/reducing-the-number-of-links-in-laravels-default-paginator-templateLaravel的分页功能使分页数据库查询非常简单,并为用户提供在结果页面之间导航的链接。默认情况下,这些链接使用标准B...翻译 2019-03-16 19:26:25 · 1182 阅读 · 1 评论 -
Laravel使用faker Model Factory生成模拟数据
laravel5内置了 fzaninotto/faker 这个库,我们可以非常简单的创建一大堆模拟数据。1. 模型工厂定义Laravel 5 提供了一个全局的对象 $factory 用来定义我们的工厂database/factories/UserFactory.php$factory->define(App\User::class, function (Faker $faker) {...原创 2019-03-16 18:15:24 · 1035 阅读 · 0 评论 -
PHP设计模式概述
为了应对各种变动;为了编写更高质量的代码;这就需要我们掌握设计模式;设计模式并不是被创造出来的;而是程序猿前辈们在开发过程中实验总结出来的;后来由GOF整理成《Design Patterns: Elements of Reusable Object-Oriented Software》一书;GOF(Gang of Four) 是 4位作者的合称;一般叫他们 4人帮 ;他们把设计模式...原创 2019-01-09 16:50:42 · 263 阅读 · 0 评论 -
如何下载安装使用别人的laravel项目
1.下载整个laravel项目或使用git clone命令git@github.com:Dev-Liangjian/sample.git2.刚下载下来的 laravel 跟正常使用的相比差个 .env 文件和 vendor 文件夹我们需要复制跟目录下的 .env.example 文件并重命名为 .env ;这个是项目的示例配置文件;我们需要改成自己的实际配置;3.在根目录执行c...原创 2019-01-09 19:56:45 · 1710 阅读 · 0 评论 -
composer总结
包版本参考:https://docs.phpcomposer.com/01-basic-usage.html#Package-Versions~和^的区别~和^的意思很接近,在x.y的情况下是一样的都是代表x.y <= 版本号 < (x+1).0,但是在版本号是x.y.z的情况下有区别,举个例子吧:~1.2 代表 1.2 <= 版本号 < 2.0^...原创 2019-01-14 11:10:38 · 1143 阅读 · 0 评论 -
XSS
跨站脚本攻击 (XSS)当你允许用户输入的 HTML 和 javascript 在你自己的网站上直接显示的时候,就有可能遭受这种攻击。 如果服务器端对于用户的输入不做任何无害处理的话,这些内容就会注入到网页的内容中去,然后浏览器就会解释执行这些 HTML 和 javascript 代码。跨站脚本攻击的解决方案阻止此类攻击的一个办法就是总是对用户输入的内容做无害处理。消除有问题的...原创 2018-09-15 19:32:18 · 274 阅读 · 0 评论 -
PHP继承有关private成员的探究
<?phpheader("content-type:text/html;charset=utf-8;");class Person{ private $name; private $age; public function __construct($name, $age) { $this->name = $name; ...原创 2018-08-01 21:47:59 · 308 阅读 · 0 评论 -
PHP7.1.12开启cURL扩展解决办法
我们都知道在php.ini中,搜索 “extension=”就可以找到载入扩展的配置。 其中” ; “表示注释,去掉注释才能是配置生效。 去掉注释仅仅是指定了PHP扩展的文件名,没有指定文件所在的路径。 因此还需要在php.ini中搜索 “extension_dir”,修改成PHP扩展文件的保存路径。 一般完成这2个步骤即可开启PHP扩展。但是并未能成功开启cURL扩展(笔...原创 2018-03-14 11:17:13 · 11430 阅读 · 1 评论 -
PHP实现随机发扑克牌
<!doctype html><html><!-- 随机发扑克牌 --><head><meta charset="UTF-8"><title>随机发牌</title><style> div{margin:15px 0} font{border:1px solid #ccc;padding:6px 3px;margin-right:10px}</style><?php// 建原创 2017-12-26 10:38:13 · 5884 阅读 · 1 评论 -
PHP实现倒计时
<?php// 根据时间戳计算时间差function format_date($mytime){ $diff = max($mytime - time(), 0); $format = [86400 => '天', 3600 => '小时', 60 => '分钟', 1 => '秒']; foreach ($format as $k => $v) {原创 2017-12-26 10:08:04 · 2778 阅读 · 0 评论 -
PHP实现国际象棋棋盘
PHP实现国际象棋棋盘<!DOCTYPE html><html><head> <title>国际象棋制作</title> <style type="text/css"> table,tr{border-collapse: collapse;border:1px solid;} td{width: 20px;height: 20px;}原创 2017-12-25 21:56:05 · 4014 阅读 · 0 评论 -
PHP实现验证码
<?phpHeader("Content-type: image/png");/** 初始化*/$border = true; //是否要边框 $digits = 4; //验证码位数$width = $digits*15; //图片宽度$height = 30; //图片高度$fontsize = 5;转载 2017-12-25 13:17:37 · 189 阅读 · 0 评论 -
几种排序算法
PHP实现冒泡排序 简单选择排序 快速排序 插入排序<?php//冒泡排序function bubbleSort($arr){ //外层循环控制需要比较的轮数 for($i = 1 ; $i < count($arr) ; $i++) //内层循环控制参与比较的元素 for($j = 0 ; $j < count($arr) - $i;原创 2017-12-23 17:20:54 · 263 阅读 · 0 评论 -
二分查找递归与非递归实现
用PHP完成二分查找递归与非递归实现<?php //非递归实现二分查找 function binarySearch($arr, $target) { $low = 0; $high = count($arr) - 1; while($low <= $high) { $mid = floor(($l原创 2017-12-23 13:53:40 · 246 阅读 · 0 评论 -
PHP安装
http://windows.php.net/download#php-7.1 在此网址下载PHP安装包,建议选择线程安全的。解压文件到指定目录创建php.ini文件 在学习阶段,建议复制一份php.ini-development文件并命名为php.ini ,将该文件作为php的配置文件。在Apache中引入PHP模块 在httpd.conf中引入PHP 7.1中的Apache模块,具体原创 2017-12-21 13:48:54 · 703 阅读 · 0 评论 -
open_basedir的设置
在php.ini中可以看到相关介绍 ; open_basedir, if set, limits all file operations to the defined directory ; and below. This directive makes most sense if used in a per-directory ; or per-virtualhost web serve...原创 2018-03-30 12:47:59 · 3625 阅读 · 0 评论 -
在函数中使用Closures
1.什么是闭包 闭包是特殊的函数,这中函数没有名字。 我们可以将它们分配给变量,就像我们用一个简单的值一样。<?php$cat = function () { echo 'test test';};//在这里,我们为一个名为$cat的变量分配了一个匿名函数或'Closure' //请注意,我们的函数附加了一个分号;//这是因为它是赋值语句的一部分,并且像任何其他单...原创 2018-04-16 15:50:58 · 218 阅读 · 0 评论 -
PHP实现字符串翻转
<?phpheader("Content-Type:text/html;charset=utf-8");//方法一 使用内置函数echo strrev('libraryRev');//方法二 使用substr获取子字符串function getRev($str,$encoding='utf-8'){ $result = ''; $len = mb_strlen(...原创 2018-07-01 11:12:23 · 591 阅读 · 0 评论 -
PHP笔试题(下)
6.mysql 慢查询是什么,一般怎么发生的? MySQL的慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。默认情况下,MySQL数据库是不开启慢查询日志的,long_query_time的默认值为10(即10秒),即运行10秒以上的语句是慢查询语句。 一般来说,慢查询...原创 2018-06-04 08:53:43 · 763 阅读 · 0 评论 -
PHP笔试题目(上)
1.写出输出结果&amp;amp;amp;amp;amp;lt;?php$str = null;$str2 = false;echo $str == $str2 ? '相等' : '不相等';$str3 = &amp;amp;amp;amp;quot;&amp;amp;amp;amp;quot;;$str4 = 0;echo $str3 == $str4 ? '相等' : '不相等';$str5 = 0;$str6 = '0';原创 2018-06-03 22:37:26 · 402 阅读 · 0 评论 -
PHP和HTML混合编写
1 单/双引号包围法,在PHP中输出HTML代码 echo输出HTML即可<?php echo ' <!DOCTYPE html> <html> <head> <title>直接echo输出HTML页面</title> </head> <body>原创 2018-05-27 19:13:31 · 20008 阅读 · 0 评论 -
PHP递归遍历目录
PHP实现递归遍历目录&lt;?php/** * 递归遍历目录 * @param string $path 目录所在路径 * @param int $deep 递归调用的深度 默认为0 * @return string 输出当前目录及子目录的所有文件 */function recursivereaddirs($path,$deep = 0){ $dirHandle = ...原创 2018-05-15 12:01:51 · 505 阅读 · 0 评论 -
PHP的Session机制
PHP Session 变量 当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。 但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。 通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。 不过,会话信息是...原创 2018-05-09 13:00:44 · 1353 阅读 · 0 评论 -
PHP创建水印
1.文字水印添加 使用imagefttext 函数<?php/** * 为图片添加文字水印 * @param string $dst_path 原图路径 * @param string $font_path 字体存放路径 * @param string $string_font 欲添加的文字 */function textwatermark($dst_pat...原创 2018-04-13 21:31:10 · 256 阅读 · 0 评论
分享