php
命中无时必强求
这个作者很懒,什么都没留下…
展开
-
使用laravel创建artisan命令
首先在Console/Commands目录下创建一个php类文件 ,该类要继承 Illuminate\Console\Command,需要实现handle方法,因为执行命令后会自动执行handle方法,所以hanler方法内就是要实现的具体业务代码.第二步,给protected name赋值,如:genkey等,本例以abc为名字第三步,找到Console/Kernel.php,在name赋值,如: genkey等,本例以 abc 为名字第三步,找到Console/Kernel.php, 在name赋原创 2021-02-06 17:16:09 · 389 阅读 · 0 评论 -
PHP扩展开发完整教程(下)
第11章 PHP中的面向对象实例化一个对象并且调用它的方法php public function hello() { echo "hello world!\n"; }}function test_call() { $obj = new baby(); $obj->hello(); }下面我们在扩展中实现以上test_call函数。zend_class_ent...原创 2019-12-16 19:22:02 · 346 阅读 · 0 评论 -
PHP扩展开发完整教程(中)
第七章 函数的参数最简单的获取函数调用者传递过来的参数便是使用zend_parse_parameters()函数,第一个参数是ZEND_NUM_ARGS() TSRMLS_CC代表参数个数,下一个参数是一个用于格式化的字符串,就像printf的第一个参数一样Type SpecifiersSpec Type Localsa array zval*A array or object z...原创 2019-12-16 10:25:26 · 541 阅读 · 0 评论 -
PHP扩展开发完整教程(上)
第一章 PHP的生命周期php的运行方式有两种:以模块的方式加载到web-server里去,与web-server一块解析被请求的php脚本以fastcgi模式运行php的时候,一般需要手动启动php服务cgi是指通用网关接口,分别为每一个请求创建一个进程,fastcgi是使用持续的进程来处理请求php有多种sapi,一般最常用的是cli模式php程序的启动可以看作有两个...原创 2019-12-15 12:31:44 · 659 阅读 · 2 评论 -
[算法]给出一个数组,算出出现在一个固定大小的滑动窗口中的最大值的结果集
<?php$arr = [1,4,5,8, 100, 20, 30 , -1, 9, 6, 70, 35, 48, 90];function maxSlidingWindow($arr, $k){ if(!$arr) return []; $window = []; $res = []; foreach($arr as $index => $val){ ...原创 2019-11-28 19:20:54 · 192 阅读 · 0 评论 -
thinkphp的nginx配置
我的项目的名字叫o2oshop本项目的配置为server { listen 80; server_name yzd.o2oshop.com.cn; access_log /data/logs/nginx/yzd.o2oshop.com.cn.access.log main; error_log /data/logs/nginx/yz...原创 2019-01-11 11:42:51 · 186 阅读 · 0 评论 -
[php内核分析]php_getopt函数
头文件:#include "php_getopt.h"源代码:PHPAPI int php_getopt(int argc, char* const *argv, const opt_struct opts[], char **optarg, int *optind, int s...原创 2018-07-11 11:11:08 · 368 阅读 · 0 评论 -
[php内核分析]zend_memnstr函数
头文件#include "zend_operators.h"源代码:static inline const char * zend_memnstr(const char *haystack, const char *needle, int needle_len, char *end){ const char *p = haystack;//目标字符串首指针 const char n...原创 2018-07-11 08:48:33 · 232 阅读 · 0 评论 -
php扩展开发之面向对象(创建一个类)
1, zend_class_entry 是php内核中一个类的原型,如果我们想创建一个类,只要将它注册到minit中去即可2,类都有方法,方法要注册到 zend_function_entry这个结构中去ZEND_METHOD(myclass, __construct){ php_printf("初始化完成");}ZEND_METHOD(myclass, public_func原创 2018-01-03 10:24:41 · 922 阅读 · 0 评论 -
一天一个设计模式(4):适配器模式
适配器模式: 我的理解是一个兼容旧对象并且增加新业务接口的对象.使用场景: 旧的对象不方便改动,继而新建一个对象继承之,然后在新对象里增加新方法;例子: 让一个老式的二孔插座支持三孔接口;class oldPanel{ function api(){ echo '这是一个2孔插接口'; }};class adapterPanel exten原创 2013-03-13 09:29:01 · 443 阅读 · 0 评论 -
一天一个设计模式(5):中介者模式
中介者模式: 由一个中介对象来完成不同对象之间的交互;例子(php): 一个经典的例子: 一个cd商城,底层有一个cd类和一个mp3类;当cd类的作者和名字有更新时,mp3也需要更新;使两个对象的数据统一;class cd{ public $title; public $author; protected $mediator; function __construct($me原创 2013-03-14 19:27:42 · 496 阅读 · 0 评论 -
23种设计模式总集-个人培训记
原创 2013-09-29 13:49:02 · 615 阅读 · 0 评论 -
一个很好用excel导出类
<?phpclass PHPExcel{ /** * Header of excel document (prepended to the rows) */ public $header = "<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:转载 2013-11-27 13:35:18 · 676 阅读 · 0 评论 -
PHP内核中的结构
//所在位置 sapi.h sapi模型可以自定义,成熟的有cgi, fpm等struct _sapi_module_struct { char *name; char *pretty_name; int (*startup)(struct _sapi_module_struct *sapi_module); int (*shutdown)(struct _sapi_module_st原创 2017-01-16 20:07:32 · 267 阅读 · 0 评论 -
php扩展开发:编写一个传递引用参数的函数
config.m4 ---------- 略PHP_FUNCTION(byref_calltime){ zval *a; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &a) == FAILURE){//将接收的第一个参数直接赋给a RETURN_NULL(); } if(!a原创 2018-01-01 13:59:30 · 809 阅读 · 0 评论 -
php扩展:输出无限变量并结束程序
ZEND_FUNCTION(dd) { int i, argc = ZEND_NUM_ARGS(); zval ***args; args = (zval ***)safe_emalloc(argc, sizeof(zval **), 0); if (ZEND_NUM_ARGS() == 0 || zend_get_parameters_array_ex(argc原创 2018-01-01 14:42:04 · 262 阅读 · 0 评论 -
zephir-定制php扩展
zephir-安装和初体验前言先在这里感谢各位zephir开源技术提供者zephir主要是解决了PHP开发人员尝试编写和编译PHP拓展所能执行的代码的语言。这是一个支持动态/静态类型的语言,熟悉PHP开发人员可以很好的进行开发。zephir这个名字的主要来源是(Zend Engine/PHP/Intermediate),今天首先介绍zephir的安装,接着会对zep转载 2017-12-18 18:06:13 · 2605 阅读 · 0 评论 -
一天一个设计模式(2): 外观模式
官方定义: 它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。我的理解: 从mvc角度来看,在c层对m层的一些接口进行整合,形成一个易用的接口; 或者说,任何一个封装了低层方法的自定义方法都是一种外观模式;例子: (php语言) 一个对低层对象B进行一系列调用的对外接口Aclass A{ static public function api(){ $原创 2013-03-08 10:31:09 · 534 阅读 · 0 评论