Laravel中编写事件和事件监听器

 分类:PHP 阅读 (1,666)  Laravel中编写事件和事件监听器已关闭评论
7月 112019
 
一、简单介绍事件和监听器

  事件Event:主要用做数据的载体,里面只是包含要传递的数据。

  监听器Listener:事件真正被触发的地方,其handle方法接受传入的Event对象,并在此处理Event中带来的数据。

二、首先定义事件和事件监听器

  打开App\Providers\EventServiceProvider.php,给$listen数组赋值要添加的事件和监听器,可定义多个事件,每个事件也可以定义多个监听器。

  比如:

三、在控制台生成相关文件

  在控制台输入命令:

  php artisan event:generate

  执行完以后可以看到App\Event和App\Listeners两个目录下多了相应的php类

四、定义Event类

  Event类主要用于运输数据,在_construct函数的参数中传入,并将值保存在内部成员变量中,示例如下:

五、Listener中处理事件

六、触发事件

  比如在用户登录成功的地方调用前面定义的事件

 

5月 172016
 

  在命令行执行php artisan key:generate时提示Could not open input file: artisan错误

  开始以为artisan是php的命令,其实是Laravel的命令

  解决方法就是cd到Laravel项目所在的目录,再执行php artisan命令,如下:

  运行环境:Windows7+php5.6+Laravel5

PHP易犯错误整理

 分类:PHP 阅读 (1,801)  No Responses »
8月 182013
 

  1. 在子函数中引用全局变量,错误描述:在一个公共文件中定义了一个$dblink对象用于访问数据库,在另外一个文件FileA中require了这个公共文件,同时在FileA中定义了一个子函数GetUserId(),在此函数中需要访问数据库读取数据,访问数据库的时候直接使用了$dblink对象,发现根本取不到相应的数据,访问数据库不成功。

  后经gg搜索,明白了在子函数中是不能直接使用公共变量的,所以必须把$dblink对象传入这个函数中才可以使用,因此解决办法是把GetUserId()改为GetUserId($tmpdblink),再使用时把$dblink对象传入此函数。

  2. PHP中连接字符串时使用“+”操作符,PHP中的“+”操作符可用于数字型数据或者数组的操作,但是不能用于字符串的连接,所以一定要注意,因为很多其他的编程语言是用“+”进行连接字符串的,所以很容易书写错误。PHP中使用“.”来进行字符串连接。

  3. PHP写函数的时候,定义时传入的变量也要使用$以标识为变量。今天写了一个函数,定义时变量直接写的变量名字convertStatus(status),没加&,导致整个页面空白,经检查发现是这个问题,改正后convertStatus($status)问题解决。

  4. 在php文件中,引用了某个php文件(用require xxx.php),但是显示时此文件布局前面总是有一空行,用chrome和IE的开发人员工具查看,会有几个字符,但页面上没显示。经研究,是因为xxx.php文件使用的是Utf8有BOM格式,文件的前几个字节后置上utf8的标志,浏览器则把那几个字节认为了是字符来处理。

  处理方式:使用notepad++打开文件,选择格式-〉转为utf8无BOM格式,保存重新上传后问题解决。

  此问题也可能会在html或者其他网页格式文件中出现。

  5. PHP中使用多个连接的问题,使用相同配置的多个连接时,总会使用最后一个连接的DB

PHP字符串函数

 分类:PHP 阅读 (2,176)  No Responses »
10月 272012
 

AddSlashes: 字符串加入斜线。
bin2hex: 二进位转成十六进位。
Chop: 去除连续空白。

chr: 语法:chr(ascii); 功能:返回序ascii码值对应的字符。
ascii: ascii码值。
注意:ascii 参数可以是十进制、八进制或十六进制。通过前置 0 来规定八进制,通过前置 0x 来规定十六进制。

chunk_split: 将字符串分成小段。
convert_cyr_string: 转换古斯拉夫字符串成其它字符串。
crypt: 将字符串用 DES 编码加密。
echo: 输出字符串。

explode 语法:explode(seperator,string,limit);功能:切开字符串成数组。
seperator: 代表要分隔标记的字符串,必要参数。
string:要进行分割的字符串,必要参数。
limit:可返回的最多的数组值数量。
返回值:如果成功返回以seperator分隔的字符串数组,失败返回false
其他说明:seperator不能为空,如果此参数为空则返回false
如果limit小于可能的分隔字符串个数,则只返回limit个数组项,最后多余的字符串将加到最一个数组项中。

flush: 清出输出缓冲区。
get_meta_tags: 抽出文件所有 meta 标记的资料。
htmlspecialchars: 将特殊字符转成 HTML 格式。
htmlentities: 将所有的字符都转成 HTML 字符串。
implode: 将数组变成字符串。
join: 将数组变成字符串。
ltrim: 去除连续空白。
md5: 计算字符串的 MD5 哈稀。
nl2br: 将换行字符转成 <br>。
Ord: 返回字符的序数值。
parse_str: 解析 query 字符串成变量。
print: 输出字符串。
printf: 输出格式化字符串。
quoted_printable_decode: 将 qp 编码字符串转成 8 位字符串。
QuoteMeta: 加入引用符号。
rawurldecode: 从 URL 专用格式字符串还原成普通字符串。
rawurlencode: 将字符串编码成 URL 专用格式。
setlocale: 配置地域化信息。
similar_text: 计算字符串相似度。
soundex: 计算字符串的读音值
sprintf: 将字符串格式化。
strchr: 寻找第一个出现的字符。
strcmp: 字符串比较。
strcspn: 不同字符串的长度。
strip_tags: 去掉 HTML 及 PHP 的标记。
StripSlashes: 去掉反斜线字符。
strlen: 取得字符串长度。
strrpos: 寻找字符串中某字符最后出现处。

strpos  语法:strpos(string,find,start); 功能:寻找字符串中某字符最先出现处。
string:被搜索的字符串,必要参数
find:要查找的字符串,必要参数
start:查找字符串的起始位置,可选参数。
返回值:如果查找到字符串返回子字符串在源字符串中的位置,以0开始,否则返回false或者null?
其他说明:此函数对大小写敏感,如果处理对大小不敏感的字符串请使用stripos.
用例1:if (strpos($hkey, “chk”) != null) { echo “ok”;}
用例2:echo (“bcoder.com”, “bcoder”); //结果为0

strrchr: 取得某字符最后出现处起的字符串。
strrev: 颠倒字符串。
strspn: 找出某字符串落在另一字符串遮罩的数目。
strstr: 返回字符串中某字符串开始处至结束的字符串。
strtok: 切开字符串。
strtolower: 字符串全转为小写。
strtoupper: 字符串全转为大写。

str_replace  语法 :str_replace(find,replace,string,count);功能:字符串替换。
find:要查找的字符串,必要参数
replace:要替换为的字符串,必要参数
string:被搜索的字符串,必要参数
count:记录替换的字符串的个数,可选参数
返回值:返回被替换后的字符串

strtr: 转换某些字符。

substr  语法:string substr ( string , start [, length ] )。功能: 取部份字符串。
string: 传入的字符串,要取子串的字符串
start: 从哪个位置开始取,如此参数为非负数,则从start位置开始取,第一个字符位置为0,如“abcdef”中a的位置为0;如果start为负数,则函数从字符结尾往前开始数;如果start大于或者等于字符串的长度,则函数返回false
length: 如果为正数,从start位置往后取,直到字符串的结尾;如果为负数……;如果为0, false或者null返回空字符串;如果没提供此参数,则从start位置下取到字符串结尾。

 

trim: 截去字符串首尾的空格。
ucfirst: 将字符串第一个字符改大写。
ucwords: 将字符串每个字第一个字母改大写

PHP中输出换行符的方法

 分类:PHP 阅读 (3,959)  No Responses »
10月 272012
 

在PHP中输出换行符的方法,是指生成的html代码里有换行符,不是生成<br>那种

在windows中输入rn
echo “rn”;

在Linux中输出n即可
echo “n”;

注意:必须用双引号括住两边