博主信息
博文 28
粉丝 0
评论 0
访问量 25734
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
1015 使用类的静态方法 自动加载 视图页面的小案例,20191015 2000-2200
没有人的夏天的博客
原创
1036人浏览过

使用类的静态方法 根据get 值  自动加载页面遇到的几个问题:

1.首先要注意引用不同路径下文件的方法

在mvc框架中,不同功能的文件放在不同的路径下,就会触发文件交叉引用的情况。

也就是说,在c路径下的文件引用了m路径下的文件,而m路径下的文件又动态引用了v路径下文件。

需要在include时加入当前文件路径信息,可以把有效的文件加载进来。否则会提示无法找到文件。

解决方案:

include dirname(__FILE__) . '/***.php';

2. 使用类进行自动加载页面,会引发变量及方法的作用域问题

也就是说在c路径下文件,调用v路径下的方法 ,而使用m路径下文件中的变量 

虽然都引用到了当前文件中,但不同类中的变量及方法还存在工作域的问题。

解决方案:

在发起调用的方法中引入inculde 包含参数及其它方法的文件,而不是在类外引入。

案例: 根据php原生mvc框架 设计 类静态方法自动加载页面案例

入口文件: index.php  更改如下

  • <!-- 加载公开信息  -->
    <?php include 'controller/title.php' ?> 
    <!--加载公共头部-->
    <?php include 'view/inc/header_inc.php'; ?>
    <!-- 加载页面模板 -->
    <?php include 'controller/config.php'; ?>
    <!--加载公共底部-->
    <?php include 'view/inc/footer_inc.php' ?>

加载页面文件:config.php 更改如下

  • <?php
    //开启session
    session_start();
    // 判断是否登录 //未登录的情况下给一个login页面
    if (!isset($_SESSION['user'])) {
        loadget::login();
    } else {
        // 判断get是否为空 空值进入 index页面
        $getname = isset($_GET['a']) ? $_GET['a'] : 'index';
        // 判断已登录情况下get是否为login,是login则进入index页面
        $getname = $getname == 'login' ? 'index' : $getname;
        // 静态调用页面
        loadget::$getname();
    }
    // 页面加载类
    class loadget
    {
        static function login()
        {
            //包含参数信息及方法库的文件在loginAction.php文件内引入,而且不是在类的外部引入
            include dirname(__FILE__) . '/loginAction.php';
        }
        static function index()
        {
            include dirname(__FILE__) . '/indexAction.php';
        }
        static function user()
        {
            include dirname(__FILE__) . '/userAction.php';
        }
        static function video()
        {
            include dirname(__FILE__) . '/videoAction.php';
        }
        // logout或get非特定值会退出
        static function __callStatic($a, $b)
        {
            //关闭session 进入loging页面
            session_destroy();
            include dirname(__FILE__) . '/loginAction.php';
        }
    }

login文件 :loginAction.php 更改部分  其它未做更改

  • <?php
    //0.加载参数文件
    include dirname(__FILE__) . '/conf.php';
    //1.加载函数库文件
    include dirname(__FILE__) . '/function_pdo.php';

       其它未做更改,最后一行加入以下代码

  • //设置传入参数值
    $list = '';
    $page = '';
    //4. 加载模版,加入变量做为参数带入到function_pdo.php的auto_load_tpl方法中
    auto_load_tpl($tplName, $list, $page);

方法库文件:function_pdo.php 更改部分 其它未做更改

  • <?php
    function auto_load_tpl($tplName, $list, $page)
    {    
        //加载模板,$list, $page 会带入到 $tplName.php 中 
        //dirname(dirname(__FILE__)) 会返回到上级目录中
        include dirname(dirname(__FILE__)) . '/view/tpl/' . $tplName . '.php';
    }

登录页面 login.tpl.php  未做更改

登录后的首页调用文件 的更改部分 indexAction.php  其它未做更改

  • <?php
    //0.加载参数文件
    include dirname(__FILE__) . '/conf.php';
    //1.加载函数库文件
    include dirname(__FILE__) . '/function_pdo.php';

        其它未做更改,最后一行加入以下代码

  • //4. 加载模版,加入变量做为参数带入到function_pdo.php的auto_load_tpl方法中
    auto_load_tpl($tplName, $list, $page);

登录后首页文件 index_tpl.php  未做更改


登录页面效果截图  根据get 值 加载页面

  • TIM截图20191027135631.pngTIM截图20191027135631.png

登录后首页效果截图 根据get 值 加载页面

  • TIM截图20191027135707.png


明星页面效果截图 根据get 值 加载页面

  • TIM截图20191027135739.png


退出及其它get值效果截图 根据get 值 加载页面

  • TIM截图20191027135808.png


  • TIM截图20191027140432.png

批改状态:合格

老师批语:很好
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学