当前位置: 58彩票app下载 > 编程技术 > 正文

如何写一个自己的渣渣PHP框架,2前后台公用类架

时间:2019-12-17 20:34来源:编程技术
本文实例解析了thinkphp3.2.2前后台公用类布局难点。分享给我们供我们参谋。具体深入分析如下: 黄金年代度创办了 IndexController 并且此时也能够依附不一样的 url来访谈差异调整器的两

本文实例解析了thinkphp3.2.2前后台公用类布局难点。分享给我们供我们参谋。具体深入分析如下:

黄金年代度创办了 IndexController 并且此时也能够依附不一样的 url 来访谈差异调整器的两样方法...

3.13事前好些个体系都应用前后台公用类,在lib/action下创办Baseaction做为公共世襲类,开掘3.2.2里边很两人都用A调用,那样每用一遍要用A调用,好艰苦,作者特意偷懒。亲测使用以下方法解决。感兴趣的情侣能够对其进展压实改过!

现行反革命加八个调整器的基类,Controller 在/data/momoma/core下创立二个索引 controller 何况在该目录下开创贰个类 BaseController.php

thinkphp3.2.2的这样成立Application/Common/Controller/BaseController.class.php复制代码 代码如下:cfg(卡塔尔国; }}

<?php
/**
 * Created by PhpStorm.
 * User: momoma
 * Date: 2017/3/8
 * Time: 下午4:22
 */
namespace corecontroller;

class BaseController {

    /**
     * 控制器 重定向
     * @param string  $url   跳转的URL路径
     * @param int     $time  多少秒后跳转
     */
    public function redirect($url, $time = 0) {
        if (!headers_sent()) {
            if ($time === 0) header("Location: ".$url);
            header("refresh:" . $time . ";url=" .$url. "");
        } else {
            exit("<meta http-equiv='Refresh' content='" . $time . ";URL=" .$url. "'>");
        }
    }

    /**
     *  数据基础验证-是否是Email 验证:xxx@qq.com
     *  Controller中使用方法:$this->is_email($value)
     *  @param  string $value 需要验证的值
     *  @return bool
     */
    public function is_email($value) {
        return preg_match('/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/', trim($value));
    }
}

在Home/Controller/ZixunController.class.php中

本条基类能够做什么样?

复制代码 代码如下:

您全部的作业层上的 controller 所要继续的成效都足以写,你也足以在 /data/momoma/core/controller/ 那几个目录里创建若干类,依次世襲。作用比方redirect,is_email 验证 email 当然你可以写过多的事物,只怕收受参数何况过滤:

public function index() { $result = $this->lists; }}

  /**
   * 获取参数 如果是GET $type == 'G'
   * @param $value
   * @param $type
   * @return string
   */
  public function getParams($value,$type) {
      if($type == 'G') {
          return $this->filter_str($_GET[$value]);
      } elseif($type == 'P') {
          return $this->filter_str($_POST[$value]);
      }
  }

  /**
   * 安全过滤类-字符串过滤 过滤特殊有危害字符
   *  Controller中使用方法:$this->controller->filter_str($value)
   * @param  string $value 需要过滤的值
   * @return string
   */
  public function filter_str($value) {
      $value = str_replace(array("","%00","r"), '', $value);
      $value = preg_replace(array('/[\x00-\x08\x0B\x0C\x0E-\x1F]/','/&(?!(#[0-9]+|[a-z]+);)/is'), array('', '&amp;'), $value);
      $value = str_replace(array("%3C",'<'), '&lt;', $value);
      $value = str_replace(array("%3E",'>'), '&gt;', $value);
      $value = str_replace(array('"',"'","t",'  '), array('&quot;','&#39;','    ','&nbsp;&nbsp;'), $value);
      return $value;
  }

本来,在前后台还足以创设自身的基类,举个例子后台建AdminController.class.php世袭BaseController.class.php,前台创造HomeController.class.php世袭BaseController.class.php各自模块世袭各自的基类,那样项目方可更清晰,能够制止重复造轮子,省比超级多作业,不过必得小心的是各类类必需注脚命名空间,然则接纳的财富得以在分其他基类中定义之后前边不用在写一遍。比方AdminController.class.php世襲BaseController.class.php,就毫无再写use ThinkController了,直接动用use CommonControllerBaseController就足以了。

接下来您的业务层的调控器,比如您上次确立的文件 IndexController 恐怕你今后要创建的各样 阿特icleController AdminController 等等。

愿意本文所述对大家的ThinkPHP框架程序设计有着帮忙。

您就能够如此使用,首先世襲 BaseController

/**
 * Index控制器
 * User: momoma
 * Date: 2017/1/23
 * Time: 下午3:44
 */
namespace controller;
use corecontrollerBaseController;

class IndexController extends BaseController {

    public function run(){
        echo "我是 Index 制器的 run 方法";

        // 接收参数
        $username = $this->getParams('name','G');
        $password = $this->getParams('pwd','P');
        $email = $this->getParams('email','P');

        // 验证邮箱
        if (!$this->is_email($email)){
            echo "邮箱格式不正确";
        }
        // 重定向
        $this->redirect('/index.php?c=demo');
    }

    public function demo(){
        echo "我是 Index 制器的 demo 方法";
    }
}

调整器的基类完结了,然后就足以写view层了...

下风姿浪漫篇写...

编辑:编程技术 本文来源:如何写一个自己的渣渣PHP框架,2前后台公用类架

关键词: