<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ltx06的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ltx06</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ltx06]]></copyright><item><title><![CDATA[tp6多级控制器路由优化]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/119837785</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/119837785</guid><author>ltx06</author><pubDate>Sat, 21 Aug 2021 12:23:22 +0800</pubDate><description><![CDATA[项目需求：

因为项目开发有版本控制。

在tp5的时候，可以通过配置


// 自动搜索控制器
'controller_auto_search' =&gt; true

来实现可以通过version/controller/action 来访问，并且不用每写一个功能都写一个路由

但是，tp6的时候，不存在这样的设置了，在网上搜索了一圈，普遍的

要么通过 version.controller/action 来访问，要么直接修改源码

我感觉还是不满意，捣腾了下，终于解决了：

思路：

本质上就是将 v.]]></description><category></category></item><item><title><![CDATA[字符串解析为if的判断条件（实现简单的字符串运算）]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/119321771</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/119321771</guid><author>ltx06</author><pubDate>Mon, 02 Aug 2021 11:42:19 +0800</pubDate><description><![CDATA[该方法适合所有的编程语言

背景：

想用字符串来当作if的条件，想用在auth权限管理里面

虽然，php的evel()函数可以实现；但是，毕竟不安全，那就自己实现一个简单的吧！

目标：

支持以下运算符：

&gt;=

&gt;

&lt;=

&lt;

==

!=

&amp;&amp;

||

支持中文

缺点：

不支持括号，所以我称之为简单的实现


&lt;?php
// $str就是要运算的字符串
// $data就是数据库查询出来的数据数组
// 如果只想要直接运算$str的，而]]></description><category></category></item><item><title><![CDATA[什么是无后效性？]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/84253978</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/84253978</guid><author>ltx06</author><pubDate>Mon, 19 Nov 2018 15:58:28 +0800</pubDate><description><![CDATA[无后效性是一个问题可以用动态规划求解的标志之一，理解无后效性对求解动态规划类题目非常重要

 

某阶段的状态一旦确定，则此后过程的演变不再受此前各种状态及决策的影响

百度百科是这样定义的，是不是很苦涩，难懂。并且网上对这个名词的解释大多都是理论性的，不好理解，今天我们通过一个例子来看看什么是无后效性 

现在有一个四乘四的网格，左上角有一个棋子，棋子每次只能往下走或者往右走，现在要让棋子走到右...]]></description><category></category></item><item><title><![CDATA[PHP strlen和mb_strlen的区别]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/84252469</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/84252469</guid><author>ltx06</author><pubDate>Mon, 19 Nov 2018 15:33:36 +0800</pubDate><description><![CDATA[先看案例：


echo mb_internal_encoding();
echo &quot;&amp;lt;br/&amp;gt;&quot;;
$str=&quot;D.C is 中国人&quot;; //
echo strlen($str);
echo &quot;&amp;lt;br&amp;gt;&quot;;
echo mb_strlen($str,&quot;utf-8&quot;); 
echo &quot;&amp;lt;br/&amp;gt;&quot;;
echo mb_strlen]]></description><category></category></item><item><title><![CDATA[array_walk_recursive把多维数组里面的所有键值和键名都取出来]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/84237311</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/84237311</guid><author>ltx06</author><pubDate>Mon, 19 Nov 2018 11:39:45 +0800</pubDate><description><![CDATA[ 

取键名：
   


array_walk_recursive($contentArr, function ($value, $key) use (&amp;amp;$result) {
        array_push($result, $key);
    });


取键值：
   


array_walk_recursive($contentArr, function ($value,...]]></description><category></category></item><item><title><![CDATA[JS调试获取执行时间小技巧]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/83787782</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/83787782</guid><author>ltx06</author><pubDate>Tue, 06 Nov 2018 15:15:29 +0800</pubDate><description><![CDATA[
console.time()和console.timeEnd()函数，参数名相同就是一对的

console.time('名称X')
 
//要执行的代码放中间(x段落)
 
console.timeEnd('名称x')

console.time('名称y')
 
//要执行的代码放中间(y段落)
 
console.timeEnd('名称y')

浏览器输出console输出：

名称x：....]]></description><category></category></item><item><title><![CDATA[json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/82965922</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/82965922</guid><author>ltx06</author><pubDate>Mon, 08 Oct 2018 11:42:53 +0800</pubDate><description><![CDATA[php格式化json的函数
json_encode($value,$options)
其中有2个比较常用到的参数
JSON_UNESCAPED_UNICODE（中文不转为unicode ，对应的数字 256）
JSON_UNESCAPED_SLASHES （不转义反斜杠，对应的数字 64）
通常json_encode只能传入一个常量，如果同时使用2个常量怎么办？
JSON_UNESCAPED_UN...]]></description><category></category></item><item><title><![CDATA[PHP将上传图片自动放缩到指定分辨率，保持清晰度]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/81627161</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/81627161</guid><author>ltx06</author><pubDate>Mon, 13 Aug 2018 11:42:09 +0800</pubDate><description><![CDATA[
class AutoImage{
    private $image;

    public function resize($src, $width, $height){
        //$src 就是 $_FILES['upload_image_file']['tmp_name']
        //$width和$height是指定的分辨率
        //如果想按指定比例放...]]></description><category></category></item><item><title><![CDATA[UNIX中管道的理解与实现]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/81364139</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/81364139</guid><author>ltx06</author><pubDate>Thu, 02 Aug 2018 17:21:00 +0800</pubDate><description><![CDATA[管道是什么

首先来看一个命令：


cat file1 file2 | sort


cat表示读取file1、file2中的数据，然后使用管道 |，将这些内容作为输入，使用sort函数作为输出，最后输出在屏幕上。

管道做了什么事

熟悉类UNIX系统的朋友一定经常使用管道，其实它就是用来做进程通讯的。我们很多时候需要将一个文件中的内容作为另一个文件的输入，或者将一个程序运行的结果作为另一个程...]]></description><category></category></item><item><title><![CDATA[Linux文件描述符]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/81364101</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/81364101</guid><author>ltx06</author><pubDate>Thu, 02 Aug 2018 17:18:05 +0800</pubDate><description><![CDATA[在Linux通用I/O模型中，I/O操作系列函数(系统调用)都是围绕一个叫做文件描述符的整数展开。这不禁让人产生疑问：这个整数代表什么？一个数值代表一个文件吗？随便传一个整数进去调用可以吗？

解答以上疑问，需要更深入学习——文件描述符(File Descriptor)。

图解

理解具体情况，需要了解由内核维护的3个数据结构：

进程级文件描述符表(file descriptor table)...]]></description><category></category></item><item><title><![CDATA[Linux通用I/O模型]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/81364036</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/81364036</guid><author>ltx06</author><pubDate>Thu, 02 Aug 2018 17:16:36 +0800</pubDate><description><![CDATA[学习Linux系统编程，文件I/O是一个不错的切入点。首先，日常操作中或多或少都使用过文件，有一定的概念；其次，文件I/O可以由几个最最基础的系统调用完成，降低入门理解难度。

基础系统调用

Linux下I/O操作是通用化的，不仅仅可以用来操作文件输入输出，还可以用来操作管道、FIFO、socket、终端设备等。将设备抽象成一个文件，用I/O操作控制设备是类Unix系统一大特色。

最最基础的I...]]></description><category></category></item><item><title><![CDATA[PHP中this,self,parent三个关键字]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/81291406</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/81291406</guid><author>ltx06</author><pubDate>Mon, 30 Jul 2018 20:25:17 +0800</pubDate><description><![CDATA[ 

this,self,parent三个关键字从字面上比较好理解,分别是指这、自己、父亲。


this是指向当前对象的指针(姑且用C里面的指针来看吧)
self是指向当前类的指针
parent是指向父类的指针(我们这里频繁使用指针来描述，是因为没有更好的语言来表达)

 

 


根据实际的例子来看看
(1) this


class UserName
{ 
   //定义成员属性 
   ...]]></description><category></category></item><item><title><![CDATA[Linux 进程间通信的机制]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/81285854</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/81285854</guid><author>ltx06</author><pubDate>Mon, 30 Jul 2018 15:27:04 +0800</pubDate><description><![CDATA[Linux 下进程间通信的6种机制：

    1.管道（Pipe）及有名管道（named pipe）：管道可用于具有亲缘关系进程间的通信，有名管道克服了管道没有名字的限制，因此，除具有管道所具有的功能外，它还允许无亲缘关系进程间的通信；    

    2.信号（Signal）：信号是比较复杂的通信方式，用于通知接受进程有某种事件生，除了用于进程间通信外，进程还可以发送信号给进程本身；linu...]]></description><category></category></item><item><title><![CDATA[PHP json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/80366892</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/80366892</guid><author>ltx06</author><pubDate>Fri, 18 May 2018 17:01:32 +0800</pubDate><description><![CDATA[php格式化json的函数json_encode($value,$options)其中有2个比较常用到的参数JSON_UNESCAPED_UNICODE（中文不转为unicode ，对应的数字 256）JSON_UNESCAPED_SLASHES （不转义反斜杠，对应的数字 64）通常json_encode只能传入一个常量，如果同时使用2个常量怎么办？JSON_UNESCAPED_UNICODE ...]]></description><category></category></item><item><title><![CDATA[关于ajax传数据到后台]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/80360576</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/80360576</guid><author>ltx06</author><pubDate>Fri, 18 May 2018 10:38:12 +0800</pubDate><description><![CDATA[ajax传整个数组到后台：先用JSON.stringify，再在后台用json_decode来接收js:$.ajax({  type:'post',  url:'',  data:{ s_data:JSON.stringify(arr)}});php:$s_data = input('post.s_data');//tp5写法$the_data = json_decode($s_data,true...]]></description><category></category></item><item><title><![CDATA[layer父子页面交互]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/80360360</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/80360360</guid><author>ltx06</author><pubDate>Fri, 18 May 2018 10:08:22 +0800</pubDate><description><![CDATA[layer是一款近年来备受青睐的web弹层组件，官网地址是：http://layer.layui.com/可以从官网上下载最新版本。当layer以iframe层的方式弹出新的窗口（子页面），如何在子页面中访问父页面的元素和函数。 1、访问父页面元素值[javascript] view plain copyvar parentId=parent.$(&quot;#id&quot;).val();//访问父页面元素值  ...]]></description><category></category></item><item><title><![CDATA[mysql之TIMESTAMP（时间戳）用法详解]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/80206199</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/80206199</guid><author>ltx06</author><pubDate>Sat, 05 May 2018 15:25:28 +0800</pubDate><description><![CDATA[timestamp数据类型是一个比较特殊的数据类型，他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间.通常表中会有一个Create date 创建日期的字段，其它数据库均有默认值的选项。MySQL也有默认值timestamp，但在MySQL中，不仅是插入就算是修改也会更新timestamp的值！这样一来，就不是创建日期了，当作更新日期来使用比较好！ 一、TIMES...]]></description><category></category></item><item><title><![CDATA[同一个页面的多个ligerGrid共用同一个方法]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/80151621</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/80151621</guid><author>ltx06</author><pubDate>Mon, 30 Apr 2018 20:14:20 +0800</pubDate><description><![CDATA[在delegate方法事件中，传参是e，用e.delegateTarget.id来获取当前操作事件所在的ligerGrid的id，这样就可以区分当前操作的是哪一个ligerGrid就可以用哪一个ligerGrid的manager管理器，就可以实现多个ligerGrid共用同一个方法了...]]></description><category></category></item><item><title><![CDATA[ligerGrid实现无缝动态滚动行（生成新/删除旧）]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/80151540</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/80151540</guid><author>ltx06</author><pubDate>Mon, 30 Apr 2018 20:07:48 +0800</pubDate><description><![CDATA[两种方案：一种是从上往下滚动：//addData是一行新数据，如{&quot;id&quot;:1,&quot;name&quot;:&quot;abc&quot;}
//manager.getRow(0)是第一行
manager.addRow(addData,manager.getRow(0),true);//在顶部增加行var len = manager.getData().length;
manager.deleteRow(len-1);//删除最后...]]></description><category></category></item><item><title><![CDATA[ligerGrid动态隐藏/显示复选框]]></title><link>https://blog.youkuaiyun.com/ltx06/article/details/80151510</link><guid>https://blog.youkuaiyun.com/ltx06/article/details/80151510</guid><author>ltx06</author><pubDate>Mon, 30 Apr 2018 19:54:26 +0800</pubDate><description><![CDATA[渲染ligerGrid的时候，默认隐藏复选框manager.toggleCol(0,false);//隐藏某个点击事件后，显示/隐藏复选框manager.toggleCol(0,true);//显示]]></description><category></category></item></channel></rss>