PHP
文章平均质量分 92
ipuxin·一朴心
天道酬勤,厚德载物
一个人也可以很快乐,只是偶尔难过
展开
-
使用PHP展示反射在get,set上的用法
/** * 展示反射在get,set上的用法 * 实际是:把对象传入反射类后,调用反射类,获取对象的属性 */class person{ public $name; public $age; public function say() { echo $this->name . "<br>" . $this->age; } public function set($name, $value) {原创 2020-05-24 22:26:46 · 211 阅读 · 0 评论 -
0401 小而巧的Zval【PHP7的基本变量】
结构体_zval_struct一个结构体:zend_value两个联合体:u1,u2这么多类型如何表示呢?u1中的type表示代码实战原创 2020-03-22 20:35:23 · 122 阅读 · 0 评论 -
0301 宏与大小端的概念【PHP7的基本变量】
在原码中的位置/Users/Macbook/Documents/100 Work/100 Work PHP/php7internal/PHPtest/php-7.2.29/Zend/zend_types.hstruct _zval_struct { zend_value value; /* value */ union { struct { ZEND_END...原创 2020-03-22 18:29:57 · 148 阅读 · 0 评论 -
0201 结构体与联合体【PHP7的基本变量】
结构体的大小结构体会进行内存对齐。64位系统中各类型所占字节数如下联合体大小共用同一块内存原创 2020-03-22 17:23:50 · 151 阅读 · 0 评论 -
0302 GDB调试走起【给PHP写插件】
编译安装cd /home/parallels/Software/SysSoftware/php7internal/PHPtest/php-7.2.29#Zend:核心源码# 查看配制选项,重要的是SAPI中的fpm,--debug,在make的时候gcc是o0,不会优化, 会显示细节,默认-o2[parallels@eduline php-7.2.29]$ ./configure -...原创 2020-03-22 14:09:10 · 407 阅读 · 1 评论 -
0304 引用类型【给PHP写扩展】
把a的指针地址给变量b变量b和a同时指向一个值。修改这个值,两个变量ab,都会随着变。但,unset($b)只是把b的zvl改为null类型,其指向的地址的值,并没有变。<?php$a = "string";$b = &$a; //此时a、b都是zend.ref类型echo $a; //stringecho $b; //string$b = "hello!";...原创 2020-03-22 16:13:16 · 87 阅读 · 0 评论 -
0303 Zend_string与写时复制
例子测试字符串,写时复制把一个字符串复制给另一个时,并没复制,只有当修改其中一个时,才发生写时复制。<?php//const string$c = "hello world!";echo $c;$a = time()."string";echo $a;//copy on write$b = $a;echo $a;echo $b;$b = "hello";e...原创 2020-03-22 15:10:55 · 127 阅读 · 0 评论 -
给PHP写扩展(N)写一个扩展
./ext_skel --extname=hellowold原创 2020-03-22 14:57:05 · 160 阅读 · 0 评论 -
PHP 内存分配
原创 2020-03-15 22:01:37 · 261 阅读 · 0 评论 -
PHP7 新特性
原创 2020-03-15 21:50:04 · 73 阅读 · 0 评论 -
PHP数组巧用
取指定键名对于某些关联数组,有时候我们只想取指定键名的那部分,比如数组为 [‘id’ => 1, ‘name’ => ‘zane’, ‘password’ => ‘123456’] 此时若只想取包含 id 和 name 的部分该怎么实现呢?下面直接贴代码。$raw = ['id' => 1, 'name' => 'zane', 'password' => ...原创 2020-03-10 18:36:34 · 142 阅读 · 0 评论 -
ThinkPHP5获取Public下的json文件
define('APP_PATH', __DIR__ . '/../application/');public function _getStructData() { $path = APP_PATH . "/../public/static/json/100000.json"; $mapStr = file_get_contents($path); ...原创 2020-03-07 16:20:39 · 1458 阅读 · 0 评论 -
最简单的谷歌跨域方法,一步OK
最简单的谷歌跨域方法浏览器输入chrome://flags/#extensions-on-chrome-urls设置Enabled原创 2020-02-23 17:16:59 · 220 阅读 · 0 评论 -
PHP 工具:无限级分类之递归和引用,检查手机号,长度
/** * 递归获取当前id下所有子id * * @param [type] $party_id * @return void */ public function _getPartyIds($party_id) { $where['parent_id'] = $party_id; $ids ...原创 2020-02-19 14:39:07 · 270 阅读 · 0 评论 -
小妖姬谷歌跨域插件失效
分享一个简洁有效的跨域方法:"桌面谷歌快捷方式"的属性中,修改:“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” --disable-web-security --user-data-dir=D:\google_data其中:D:\google_data 需要自行建一个目录从"桌面谷歌快捷方式"打开即可。...原创 2020-02-11 11:54:38 · 295 阅读 · 0 评论 -
EasySwoole 定时器(下)毫秒定时器的使用
引入Timer类注册事件,在其内运行毫秒定时器use EasySwoole\Component\Timer;public static function mainServerCreate(EventRegister $register) { //使用毫秒定时器 $testParam = "Test Timer \n"; $regi...原创 2020-02-01 13:02:11 · 619 阅读 · 0 评论 -
EasySwoole 定时器(上)定时任务的使用
好处:免去了在Linux中编写的不直观。缺点:只能精确到秒,下文中,用毫秒定时器解决。第一步:调用在主进程中注册,调用use App\Crontab\TaskOne;use EasySwoole\EasySwoole\Crontab\Crontab;public static function mainServerCreate(EventRegister $register)...原创 2020-02-01 12:54:03 · 1851 阅读 · 0 评论 -
PHP设计模式(一)单例
简单版trait Singleton{ private static $instance; static function getInstance(...$args) { if (!isset(self::$instance)) { self::$instance = new static(...$args); ...原创 2020-01-31 19:21:37 · 186 阅读 · 0 评论 -
PHP 反射的应用
根据不同类型,实例化不同的类比写if else 扩展好些,看起来优雅些吧// 增加一个类型,在这里增加一对键值对$supportedClass=[ "image" => "\App\Lib\Upload\Image", "video" => "\App\Lib\Upload\Video",];// $type:上传文件的类型// $request:上传文件的参数...原创 2020-01-31 11:01:38 · 203 阅读 · 0 评论 -
Yaconf – 一个高性能的配置管理扩展,Linux & Mac
致敬鸟哥性能我见过很多的项目中, 用PHP文件做配置的, 一个config目录下可能有十几个甚至数十个.php配置文件, 里面都是各种各样的array, 还有甚者会把一些词典文件(比如中文/英文对照)也放到配置中去. 这就导致配置文件的解析耗费了很大的性能(诚然, 用了opcache能好点, 但是实际上还是有执行的过程).除了PHP的, 还有用json的, yaml的, 一个共同...原创 2020-01-26 14:30:45 · 584 阅读 · 0 评论 -
VS Code忍不住要说说
囊周羞涩,破解困难由PHPStorm转到VS Code柳暗花明经过大半天捣鼓,VS Code上成功找到了PHPStorm上的几乎所有功能。而且,更好,轻巧但更优秀。Git, Sftp, 跳转,搜索,排除,注释,复制行。。。心得不好的事儿,就放下吧,世界那么大,总有一个适合你的,别怕困难,别放弃努力,只有那样,你才能得到心中的美好。过而不恋,未来不迎踏踏实实,走好脚下的每一步路。...原创 2020-01-24 14:42:28 · 211 阅读 · 0 评论 -
PHP 与正则
0104 正则 符号https://regexr.com/基本常用元字符代码说明:大写为反义.匹配除换行符以外的任意字符\w \W匹配字母或数字或下划线\s \S匹配任意的空白符\d \D匹配数字\b \B匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结束[^x]匹配除了x以外的任意字符[^ae...原创 2020-01-23 12:29:02 · 164 阅读 · 0 评论 -
高效使用 VS Code PHP版(替代PhpStorm)
配置vscode忽略node_module文件夹设置中搜索:setting.json添加:“files.exclude”: {“.idea/”: true,“.vscode/”: true}sftpCTRL+SHIFT+P,输入sftp配置:{“name”: “worldlet_ipuxin_com”,“host”: “119.23.238.114”,“proto...原创 2020-02-01 13:32:37 · 9325 阅读 · 0 评论 -
tp5内置验证规则
验证规则 描述require 必须验证alpha 是否为字母alphaNum 是否为字母和数字alphaDash 是否为字母、数字,下划线_及破折号-number 是否为数字integer 是否为整型(注意大小范围)float 是否为浮点型boolean 是否为布尔型email 是否为有效的邮箱格式array 是否为数组accepted 是否为 yes、on或者 1...原创 2020-01-20 22:13:26 · 359 阅读 · 0 评论 -
ThinKPHP5 多语言关联
主表 aviationnamespace app\api\model\db;use think\Model;class AviationModel extends Model{ protected $name = 'aviation'; protected $autoWriteTimestamp = 'datetime'; protected $lang_i...原创 2019-12-18 16:58:27 · 88 阅读 · 0 评论 -
ThinkPHP 模型高级
Read查询操作应当静态调用,更新和删除操作则动态调用// 查询单个记录$this->where('name', 'thinkphp')->find();// 调用动态查询方法$this->getByName('thinkphp');// 查询数据集$this->where('id', '>', 0)->limit(10)->order(...原创 2019-12-14 21:24:24 · 186 阅读 · 0 评论 -
ThinkPHP5 模型数据处理
获取器//// 定义namespace app\index\model;use think\Model;class User extends Model{ protected function getCreateTimeAttr($value){ return date('Y-m-d', $value); } // 获取器,第二个参数的作用 ...原创 2019-12-09 07:35:27 · 570 阅读 · 0 评论 -
PHP匿名函数
递归$fib = function ($n) use (&$fib) { if ($n == 0 || $n == 1) { return 1; } return $fib($n - 1) + $fib($n - 2);};// 2echo $fib(2) . "\n"; $lie = $fib;//rewrite $fib va...原创 2019-12-09 07:17:28 · 79 阅读 · 0 评论 -
ThinkPHP5 模型入门
首先开启调试// 应用配制文件// 开启应用调试模式'app_debug' => true,// 开启应用Trace'app_trace' => true, 'log' => [ // 日志记录方式 'type' => 'File', // error和sql日志单独记录 'apa...原创 2019-12-06 08:27:43 · 190 阅读 · 0 评论