这种目录结构下sp无法正常运行

#1 kernel

/index.php -> include '/app/index.php';

/app/  内含 model controler等 外加 /app/index.php 内容是 include /speedphp/ ... sprun()

/speedphp/

2011-03-27 16:10:39

#2 jake

如上面所述,错误提示是什么呢?

另,sp可以支持很复杂的目录结构,当然,那需要在入口文件进行配置,具体可以参考sp配置文档

http://speedphp.com/manual/spconfig

2011-03-27 16:44:07

#3 kernel

知道问题了,如果/app/index.php被一个函数或者类包含 会有问题

问题在于:

function loadSpeedPHP(){
global $spConfig;
$spConfig = array();
require(SP_PATH."/SpeedPHP.php");

spRun();

}

文件里:

// 构造执行路由
$__controller = isset($_REQUEST[$GLOBALS['G_SP']["url_controller"]]) ?
        $_REQUEST[$GLOBALS['G_SP']["url_controller"]] :
        $GLOBALS['G_SP']["default_controller"];
$__action = isset($_REQUEST[$GLOBALS['G_SP']["url_action"]]) ?
        $_REQUEST[$GLOBALS['G_SP']["url_action"]] :
        $GLOBALS['G_SP']["default_action"];



$__controller,$__action

被声明为局部变量,应该改为

$GLOBALS['__controller'] = isset($_REQUEST[$GLOBALS['G_SP  ...

2011-03-27 16:47:29

#4 kernel

/**
* spRun  执行用户代码
*/
function spRun(){
        GLOBAL $__controller, $__action;
        // 对路由进行自动执行相关操作



这样这个函数才能获取得到变量

2011-03-27 16:51:01

#5 jake

无语。。。入口文件还拿来包含。。。入口文件的定义是直接被访问的文件。

建议让入口文件直接被访问。

2011-03-27 16:53:47

#6 kernel

项目是多种多样的 复杂一点的部署不能由一个子应用独占入口 框架应该自我封装吧 不要太依赖全局变量

2011-03-27 16:58:52

#7 jake

项目是多种多样的 复杂一点的部署不能由一个子应用独占入口 框架应该自我封装吧 不要太依赖全局变量 ...
kernel 发表于 2011-3-27 16:58
多入口是可以的,只是建议入口文件的作用仅作为入口文件,没必要把入口文件包含入口文件。
这里是大规模多入口部署的方法:
http://speedphp.com/post/release-dirs.html

另外,刚才说的并非是“全局变量”,而是配置路径,因为框架格局要改变的话,那么路径必须重新配置,这不是封装能解决的。

2011-03-27 17:03:46