首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈开发之路

    yaf框架熟悉

    '/static/uploadDir'); $application = new Yaf_Application( APPLICATION_PATH . > 2、开发入口 —— Bootstrap.php 很多基础功能都是在这里先注册的 class Bootstrap extends Yaf_Bootstrap_Abstract{ public function _initConfig() { //把配置保存起来 $arrConfig = Yaf_Application::app()->getConfig(); Yaf_Registry::set('config', $arrConfig); } public function _initPlugin(Yaf_Dispatcher 里 加载conf中的文件 2)调用Bootstrap.php 3)根据请求里的controller和action的定义找到对应的controller 4、yaf的路由 rewrite规则 参考:

    1.1K20发布于 2021-01-26
  • 来自专栏golang算法架构leetcode技术php

    yaf源码阅读

    测试用的Yaf的入口文件ap.php <? ($conf); $app->run(); 测试用的Yaf的默认控制器Index.php <? $this->disableView(); //关闭视图输出 echo "Laruence"; } } yaf的入口是yaf_application类,我们可以做一些个性化的定制配置 类的action方法后,调用yaf_call_user_method回调用户空间的controller类的action方法 如果遇到未加载的类,会按照psr4规则加载,这就是yaf的基本加载运行流程, 详情可以参考yaf的源码 如果存在Bootstrap()就会先执行该文件,该文件包含了一系列的初始化环节,并返回一个Yaf_Application对象,紧接着调用了它的run方法,run里面包含了图中所有环节

    69710编辑于 2022-08-02
  • 来自专栏PHP在线

    PHP - Yaf的介绍

    Yaf是一个C语言编写的PHP框架 Yaf的特点 剑的三层境界:一是手中有剑,心中亦有剑;二是手中无剑,心中有剑;三是手中无剑,心中亦无剑 在和其他用PHP写的PHP框架来比的话, Yaf就是剑的第二层境界 Yaf的优点 天下武功无坚不破,唯快不破 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销. 流程图 Yaf提供了完善的API, 并支持Bootstrap和插件机制. 整体流程图如下: ? ---- 更多干货,长按识别关注 尽在phpeveryday

    1.6K90发布于 2018-03-08
  • 来自专栏陶士涵的菜地

    Yaf框架的简单安装使用

    PHP开发组鸟哥惠新宸开发的php扩展框架 安装 windows下载扩展:https://pecl.php.net/package/yaf/2.2.9/windows 根据自己的电脑系统和php的版本号选择 把php_yaf.dll扩展放到ext目录下 重启apache 使用 新建目录public,新建文件index.php入口文件 <? ./')); /* 指向public的上一级 */ $app = new Yaf_Application(APP_PATH . php class IndexController extends Yaf_Controller_Abstract { public function indexAction() {//默认Action $this->getView()->assign("content", "Hello Yaf"); } } 新建目录views/index,新建文件index.phtml

    71010发布于 2019-09-10
  • 来自专栏学习日记

    PHP的yaf框架类加载机制

    代码 注册ini设置到global_library变量(yaf.c) STD_PHP_INI_ENTRY("yaf.library", "", PHP_INI_ALL, OnUpdateString, global_library, zend_yaf_globals, yaf_globals) 把global_library和local_library都传递给了loader的初始化方法(yaf_application.c zend_string_init(YAF_G(global_library), strlen(YAF_G(global_library)), 0) : NULL; loader = yaf_loader_instance zend_string_init(YAF_G(global_library), strlen(YAF_G(global_library)), 0) : NULL; loader = yaf_loader_instance yaf_loader_instance逻辑(yaf_loader.c) yaf_loader_instance有三个参数,loader的指针,本地类地址和全局类地址 if (library_path)

    1.2K20发布于 2019-06-16
  • 来自专栏无敌小笼包

    Yaf---写在前面

    更快的执行速度, 更少的内存占用 Yaf的安装 Windows Yaf只支持PHP5.2及以上的版本 Yaf需要SPL的支持. SPL在PHP5中是默认启用的扩展模块 Yaf需要PCRE的支持. 的常量 常量(启用命名空间后的常量名) 说明 YAF_VERSION(Yaf\VERSION) Yaf框架的三位版本信息 YAF_ENVIRON(Yaf\ENVIRON) Yaf的环境常量, 指明了要读取的配置的节 (Yaf\ERR\CALL_FAILED) Yaf的错误代码常量, 表示调用失败, 值为519 YAF_ERR_AUTOLOAD_FAILED(Yaf\ERR\AUTOLOAD_FAILED) Yaf的错误代码常量 , 表示自动加载类失败, 值为520 YAF_ERR_TYPE_ERROR(Yaf\ERR\TYPE_ERROR) Yaf的错误代码常量, 表示关键逻辑的参数错误, 值为521 yaf 的配置项 选项名称 forward最大嵌套深度 yaf.use_namespace 0 PHP_INI_SYSTEM 开启的情况下, Yaf将会使用命名空间方式注册自己的类, 比如Yaf_Application将会变成Yaf

    2.4K20发布于 2021-07-23
  • 来自专栏无敌小笼包

    Yaf---加载规则插件使用

    Yaf在自启动的时候, 会通过SPL注册一个自己的Autoloader, 出于性能的考虑, 对于框架相关的MVC类, Yaf Autoloader只以目录映射的方式尝试一次. Yaf将依照类名中的目录信息, 完成自动加载. 使用Bootstrap 在一个Yaf_Application被实例化之后, 运行(Yaf_Application::run)之前, 可选的我们可以运行Yaf_Application::bootstrap 它们都必须继承自Yaf_Plugin_Abstract. 插件要发挥功效, 也必须现实的在Yaf中进行注册, 然后在适当的实际, Yaf就会调用它. 更多Yaf_Request_Http类的内容可参见文档: http://www.laruence.com/manual/yaf.class.request.html#yaf.class.request.http

    92010发布于 2021-07-23
  • 来自专栏无敌小笼包

    Yaf---Session | 模板 | 模型 | Cli模式

    Yaf_Session是Yaf对Session的包装, 实现了Iterator, ArrayAccess, Countable接口, 方便使用.关于Yaf_Session的文档介绍:http://www.laruence.com /manual/yaf.class.session.html 模板 The Yaf_View_Simple class 官方文档:http://www.laruence.com/manual/yaf.class.view.html Yaf_View_Simple是Yaf自带的视图引擎, 它追求性能, 所以并没有提供类似Smarty那样的多样功能, 和复杂的语法. 所以, 最初的时候, Yaf并不包含ORM.诚然, ORM可以提高开发效率, 尤其对于一些简单应用, 所以我想在后续的Yaf的版本中, 会考虑加入ORM, 但是那也绝对会是一个简单的ORM, 类似于Yaf /manual/yaf.incli.times.html 感觉文档写得有点简单,不好理解,这里聊下我是怎么用的yaf命令行。

    2.3K20发布于 2021-07-23
  • 来自专栏无敌小笼包

    Yaf---异常和错误 | 路由和分发

    Yaf实现了一套错误和异常捕获机制, 主要是对常见的错误处理和异常捕获方法做了一个简单抽象, 方便应用组织自己的错误统一处理逻辑。 php class Bootstrap extends Yaf_Bootstrap_Abstract{ public function _initRoute(Yaf_Dispatcher $dispatcher) { $router = Yaf_Dispatcher::getInstance()->getRouter(); $router->addConfig(Yaf_Registry (Yaf_Registry::get("config")->routes); //在刚才的示例里添加上下面两行 $route = new Yaf_Route_Simple(" Yaf_Route_Simple 上面是Yaf_Route_Simple的一个示例 Yaf_Route_Simple是基于请求中的query string来做路由的, 在初始化一个Yaf_Route_Simple

    1.2K20发布于 2021-07-23
  • 来自专栏技术博文

    适合初学者对Yaf框架的学习(一)

    前言   最近接触到Yaf框架,从最初按照鸟哥惠新宸的写的关于Yaf手册,到自己写一个hello world 程序,对于我这个新手来说还是蛮曲折的,大家都知道yaf框架是用C写的,所以自身的效率和性能, 还是很不错的,但是缺点的就是关于yaf的文档太少,这让不少初学者很头疼,其实这也不能算缺点,毕竟一个框架的兴起,得靠大家一点点把它壮大,写这篇文章,一是为了几个笔记,而是希望对刚接触yaf的同志们能有所帮助 声明:试验中WEB环境采用的是LNMP 一、下载Yaf   Yaf其实算是PHP官方的一个扩展,我们可以直接在PHP官网下载。  二、Yaf的安装与配置   (1)然后执行解缩unzip命令以后, 进入Yaf的源码目录,执行以下命令 /alidata/server/php/bin/phpize 其中 /alidata/server extension=yaf.so ?

    1.5K60发布于 2018-04-16
  • 来自专栏技术博文

    适合初学者对Yaf框架的学习(二)

    前言 上一篇介绍了Yaf的安装,适合初学者对Yaf框架的学习(一)http://www.cnblogs.com/joshua317/articles/4622551.html,这篇来介绍一下Yaf的布局 一、Yaf的目录结构 1 YafWeb 2 index.php #入口文件 3 application #应用目录 4 Bootstrap.php 5 /conf'); //定义全局library ini_set('yaf.library', APP_PATH.' /app.ini",'common'); yaf读取配置文件app.ini,这样就会创建了一个对象 object(Yaf_Application)#1 (7) { ["config":protected php class Bootstrap extends Yaf_Bootstrap_Abstract { #里面具体需要啥,自己补充 } 4.Base.php文件 <?

    1.2K60发布于 2018-04-16
  • 来自专栏技术博文

    适合初学者对Yaf框架的学习(一)

    前言   最近接触到Yaf框架,从最初按照鸟哥惠新宸的写的关于Yaf手册,到自己写一个hello world 程序,对于我这个新手来说还是蛮曲折的,大家都知道yaf框架是用C写的,所以自身的效率和性能, 还是很不错的,但是缺点的就是关于yaf的文档太少,这让不少初学者很头疼,其实这也不能算缺点,毕竟一个框架的兴起,得靠大家一点点把它壮大,写这篇文章,一是为了几个笔记,而是希望对刚接触yaf的同志们能有所帮助 声明:试验中WEB环境采用的是LNMP 一、下载Yaf   Yaf其实算是PHP官方的一个扩展,我们可以直接在PHP官网下载。  二、Yaf的安装与配置   (1)然后执行解缩unzip命令以后, 进入Yaf的源码目录,执行以下命令 /alidata/server/php/bin/phpize 其中 /alidata/server extension=yaf.so ?

    1.1K20发布于 2019-01-30
  • 来自专栏猛牛哥的博客

    解决安装yaf扩展后依然出现Fatal error: Uncaught Error: Class ‘YafLoader’错误

    使用pecl install yaf命令安装yaf扩展后,运行相关程序依然提示Fatal error: Uncaught Error: Class 'Yaf\Loader'错误,解决方法是在php.ini 文件内增加yaf.use_namespace = "On"。 extension="yaf.so" yaf.use_namespace = "On" [PHP] 参考文章:https://blog.csdn.net/ZDX_Y/article/details/79550130 yaf.use_spl_autoload = On yaf.environ = "develop" yaf.use_namespace = On

    73320编辑于 2023-10-21
  • 来自专栏坚毅的PHP

    PHP码农在Golang压力下的生存之道-PHP性能优化实践

    dev压测 dev02启动一个qps 2w+的curl接口 dev03 4核16G机器,分别跑yaf 、golang、es(EasySwoole,之后换成yaf+swoole,性能差不多)、lua 1、新建yaf项目  2、 使用 https://github.com/LinkedDestiny/swoole-yaf新建swoole+yaf项目,使用yaf作为路由 其中 yaf项目 可更改  src/public/index.php   只echo "hello world" ,不启动yaf 作为测试1 ,启动yaf 执行MainController中的exampleAction作为测试2 5990 trans/sec 测试2: yaf 2687 trans/sec 测试3: swoole+yaf 18382 trans/sec 过nginx代理则变为8980 trans/sec ,比如1~4核,使用swoole+yaf ,相比yaf能大幅提升性能。

    2.6K80发布于 2018-03-20
  • 来自专栏技术人生

    Class '\Yaf\Application' not found 的报错排查,已经解决【php】

    一、备注 新配置Linux环境 由报错可知肯定是yaf框架,一个轻量级高效率基于PHP扩展由鸟哥开发的框架 index.php入口文件中报错 Yaf类没有找到 二、思路描述 1.因为新配置的环境,所以考虑下有没有安装 yaf 没有安装进行安装,如果安装继续排查问题 2.php -i | grep yaf 已经开启,并没有打开yaf.use_namespace 3.查看php.ini文件。 相关扩展是否开启 yaf.use_spl_autoload = On yaf.environ = "develop" yaf.use_namespace = On 4.如果以上没问题,查看\Yaf的引入路径是否正确 //pecl.php.net/package/yaf wget下载或者直接上传安装包都可以 注意:yaf3是给php7使用的,如果你的PHP版本在7以下,请下载yaf2的版本,否则在make时会报错 解压到当前目录 [yaf] extension=yaf.so ;yaf.st_compatible=1 yaf.name_suffix=0 yaf.use_namespace=1 yaf.name_separator

    1.6K10发布于 2020-11-13
  • 来自专栏CSIG质量部压测团队

    【项目实战-11】进程莫名被杀,真相是...

    【摘要】 Yaf框架是一个c语言编写的PHP框架,它更快、更轻、内存占用更低。项目组本着对性能的追求选择了Yaf框架,由于安全的原因PHP升级到7.3.18,为了兼容PHP,将Yaf升级到3.2.3。 Yaf框架的bug导致PHP进程core。尽管从表象上看就是一个core,但整个排查解决的过程还是遇到了不少困难,这里记录了这一次线上core的整个排查过程,希望能够帮助遇到类似问题的同学。 【背景】 因为php 7.0.9有安全漏洞,升级到php 7.3.18,PHP的Yaf框架3.2.3版本导致接口服务出现502。 28.png 问题根因 Yaf 3.2.3版本,请求uri中出现两个相同参数,进程会被SIGSEGV信号杀掉。 /laruence/yaf/issues/491 (从yaf3.0.9升级到3.2.4出现php-fpm进程被SIGSEGV信号杀掉) 29.png 解决方案 回退yaf版本到3.0.9,该版本经验证没有上述

    1.2K10发布于 2021-02-23
  • 来自专栏stark张宇

    PHP - php7扩展安装的完全攻略 swoole、yaf、grpc

    概述这篇是php7源码系统攻略的第三篇,是对之前的知识和补充,踩了很多坑,鏖战了数天才完全通关,下面带你安装常用的 redis 、yaf 、swoole 、 扩展,以及trie_filter、xdiff pecl官网去pecl官网,下载指定版本的扩展,使用命令wget https://pecl.php.net/get/yaf-3.0.7.tgz,太老旧的版本可能已经下线了,最好去官网去查询一下。 下面我以swoole-4.2.11为例子,来演示一下第二类的扩展,redis、MongoDB、yaf都是同样的道理。 --with-php-config=/usr/local/php7/bin/php-config3.编译、修改配置文件编译make && make install修改配置文件echo 'swoole=yaf.so

    1.5K101编辑于 2023-02-07
  • 来自专栏喵了个咪的博客空间

    phalcon-入门篇1(基本介绍与环境搭建)

    中文资料较少,虽然官网给出了中文文档但是翻译着实不全 对新手不友好学习成本高 ##2 phalcon对比其他框架## 我们先看一下官方提供的框架性能对比图: 在这里我针对于我们几个常用的框架做了一下对比Yaf ),ThinkPhp(国内运用广泛的mvc框架),PhalApi(纯API框架),phalcon 分别从性能,功能,易用性,国内社区支持**(此次排名均属于个人观点提供参考)** ###性能:### yaf 从性能上来说是最好的他的速度最快原因是应为底层功能逼phalcon简单 差距非常小 phalapi虽然是轻量级API框架但是和C底层框架也还是有一点的差距的 thinkphp就不用说了 Yaf -> phalcon yaf和phalcon基本不相上下 phalapi -> thinkphp -> phalcon = Yaf ###国内社区支持:### 在国内社区支持上面thinkphp当值无愧 phalapi虽然是新框架已经进入开源中国 TOP 50 也很强给个第二名 yaf虽然是鸟哥写的框架可是占有率感人所以和phalcon打平 thinkphp -> phalapi -> phalcon = Yaf 从上面大家不难看出phalcon

    1.9K50发布于 2018-03-01
  • 来自专栏枕边书

    代码重构之旅(一) 项目结构

    针对这些问题,考虑将代码迁移到 Yaf 框架下,将其重构: 使用 Yaf 框架管理代码组织,使用命名空间实现易加载、按需加载。 Yaf Yaf 学 PHP 应该都有所了解,这里不过多介绍。 它作为用 C 编写的PHP扩展存在,效率自然不用多说,选用 Yaf 更多是因为它作为框架的“自由”。 Yaf 最大限度地给开发者自由,开发者可以定义代码结构,在路由各步骤间定义个性化需求。而Yaf 只在最适合的时候提供一些帮助,恰好足够满足开发需求,又不会添加多余的规则和限制。 就如同我们在使用导航软件时,传统框架一般会在地图标出一条路线,这条路线可能会为了你并不需要饭店或宾馆而绕远路,而开发者必须沿着这条路走;Yaf则只会指明方向,走直线或弯路全凭自己实现。 除此之外,将一些很常用的方法和常量注册为全局,省去了不必要的频繁加载;同时也借用了Yaf 内置全局变量提供了公共数据透传功能。

    1.1K70发布于 2018-01-04
  • 来自专栏枕边书

    代码迁移之旅(二)- 渐进式迁移方案

    使用 ln -s /path/to/dir_new /path/to/dir_old/yaf 在旧项目目录下创建一个 yaf 软链接指向新项目目录; 这样,就可以以旧项目目录为根目录,找到新项目目录下的文件了 ,使用单行命令 rewrite ^(/api/test.json(.*)$) /yaf/public/index.php$1 break; 即可。 框架内URL重写 通过上面 Nginx 的重定向,所有的请求都会被分发到 index.php 中, 接下来就需要在 yaf 内对 index.php 接收到的 Http 请求进行内部分发。 yaf 提供了 Yaf_Route_Static、Yaf_Route_Simple、Yaf_Route_Supervar、Yaf_Route_Map、Yaf_Route_Rewrite、Yaf_Route_Regex ... ); 然后在 Bootstrap.php 内加载此配置文件: public function _initRouter() { $router = \Yaf

    2.1K90发布于 2018-01-04
领券