php mcv,swolle http mcv设计问题
### 问题描述
使用 swoole http 的问题
就是改变了 控制器文件 不重启 怎么还能 才能让类正常使用
比如 index\controller\index类里面的index方法 调用返回 333
然后我修改了 这个文件 让它index方法 返回444
在不重启服务的情况下 怎么 才能释放这个 命名空间
### Swoole版本,PHP版本,以及操作系统版本信息
Swoole 4
php 7
centos7
### 相关代码
```php
//自动加载类
$class_name=str_replace('\\',"//",$class_name);
$file_path= root_dir.DS.$class_name.".php";
if (is_file($file_path) && file_exists($file_path)) {
return include($file_path);
}
$file_path= APP.DS.$class_name.".php";
if (is_file($file_path) && file_exists($file_path)) {
include($file_path);
}
return false;
```
```php
//index.php 文件 第一次加载
namespace index\controller;
use core\controller;
class index extends controller{
public function __construct(){
parent::__construct();
}
public function index(){
return json_encode(array("a11"=>"333"));
}
public function index2(){
$this->assign("home","index12345621方法");
}
}
```
```php
//index.php 文件 希望 第二次加载 但是应为已经声明了所以不会再次加载
namespace index\controller;
use core\controller;
class index extends controller{
public function __construct(){
parent::__construct();
}
public function index(){
return json_encode(array("a11"=>"444"));
}
public function index2(){
$this->assign("home","index12345621方法");
}
}
```
```php
//判断文件是否存在
if (file_exists($controller_file)) {
echo 'get_declared_classes !';
var_dump(get_declared_classes ());
$class_namespacename = "\\" . $module_name . "\\".controller."\\" . $class_name;//模块,控制器,类名称
$class_obj = new $class_namespacename();
if (method_exists($class_obj, $function_name)) {
$http_data=$class_obj->$function_name();
} else {
$http_data = "模块/控制器/方法->" . $module_name . '/' . $controller_name . '/' . $function_name . "不存在!";
}
//判断试图文件是否存在 存在则使用试图
if(empty($http_data) && file_exists($view_file)){
$http_data = $smarty->fetch($view_file);
}
$this->swoole_response->header("Content-Type", "text/html; charset=utf-8");
$this->swoole_response->end($http_data);
unset($class_obj);//使用完成后释放对象
} else {
$this->swoole_response->header("Content-Type", "text/html; charset=utf-8");
$http_data = '
404 文件丢失
';
$this->swoole_response->end($http_data);
}
```
### 你期待的结果是什么?实际看到的错误信息又是什么?
php mcv,swolle http mcv设计问题相关推荐
- 谋而后动:解读数仓计划生成中行数估算和路径生成的奥秘
摘要: 孙子兵法云:"谋定而后动,知止而有得",做任何事一定要进行谋划部署,做好准备,这样才能利于这件事的成功,切不可莽撞而行.同样,GaussDB(DWS)执行查询语句也会按照预 ...
- 最新golang语言面试题总结(三)
1.go中拼接字符串有几种方式 1."+" 最常用的方法就是,使用"+"将两个字符串进行连接,与Python类似,不过Go语言中的字符串是不可变的类型,因此用& ...
- 对于Spring MCV的理解
对于Spring MCV的理解 1.什么是Spring MCV? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Contro ...
- postgresql对于HashJoin算法的Data skew优化与MCV处理
Data skew 很好理解,即数据倾斜.现实中的数据很多都不是正态分布的,譬如城市人口,东部沿海一个市的人口与西部地区一个市地区的人口相比,东部城市人口会多好几倍. postgresql的skew的 ...
- [PyQt] MCV模式学习-0
MCV模式学习-0 目的 item-based模式 0.0 QStringListModel 0.1 QAbstractListModel 0.2 目的 之前的PyQt采用的是item based形式 ...
- MCV 和 MTV框架基本信息
一 . MCV # web服务器开发最著名的MVC模式M : model.py 就是和数据库打交道的, 创建表等操作V : view 视图(视图函数,就是装HTML文件的)C : controller ...
- springBoot的mcv(视图)控制
springBoot的mcv(视图)控制 新建个类,继承WebMvcConfigurer 类名上加注解@Configuration @Configuration public class MyMvcC ...
- 二、CI框架之MCV模型
一.关于MCV,大概就是下图所示: 模型(model)-视图(view)-控制器(controller) M用来处理数据库,V用来显示界面,C用来控制 二.对应到CI的源码,对应的是这3个目录 转载于 ...
- 简单理解SpringMVC的三层结构顺序MCV以及ModelAndView的使用
MVC三层结构 (M->C->V) requset–>中心总控制器(DispatcherServlet) 中心控制器接收到用户请求后:将请求转发到HandlerMapping (方法 ...
最新文章
- boost linux 下安装
- Py之easygui:easygui的简介、安装(最正确安装)、使用方法之详细攻略
- 2020-11-28 Latex相关小工具
- 如何解决SVN Commit failed (details follow): Access denied
- vi 搜索命令_vi或vim如何查询关键字
- 电子书下载:Programming Microsoft LINQ in Microsoft .NET Framework 4
- python args kw_Python基础-参数魔法,*args,**kwags
- 中国内部数据集成软件行业市场供需与战略研究报告
- ubuntu16.04安装天气预报软件
- 自助友情链接交换网站php源码,友情链接交换系统
- c51为啥要宏定义时钟_c51时钟
- PowerDesigner 下载安装
- Java中创建对象有哪几种方式,Java 中创建对象的4种方式--Java学习网
- RoundProgressBar(圆形进度条)
- (纯原创)分解质因数
- 怎么从Apache maven 官网下载旧版本
- 权限管理后端篇(一)之创建权限管理表引入knife4j和Druid数据源
- Discuz论坛升级攻略及踩坑处理
- 蓝精灵事件来袭: 深受喜爱的蓝色角色来 Web3 啦!
- 洛谷P1135:奇怪的电梯(lift)