Skip to content

gettingStarted introduction

tolizhan edited this page Dec 1, 2024 · 3 revisions

入门演示

演示准备

  1. 正式部署完成操作后, 根目录仅有include, index.php 和 license.txt
  2. 在index.php同级分别创建 model view ctrl 文件夹, 形成一个MVC架构模式
  3. 当然也可以使用其它模式
  4. 访问时, 控制层类名不是"serv"和"of"开头的, 默认会开启session, 详见 框架配置_of.session.autoStart框架会话

Hello World 一个面向过程的小脚本

创建入口文件 /test.php 文件

<?php
/**
 * 描述 : 入口文件, 支持面向过程开发
 */
//框架唯一入口
require dirname(__FILE__) . '/include/of/of.php';

//调用文本封装生成唯一值 echo of_base_com_str::uniqid(), "<br>\n"; //调用快捷方法查询SQL语句 print_r(L::sql('SELECT 1'));

运行 /test.php 结果如下

fe6583ee08684d9587bac3b5b564f883
Array ( [0] => Array ( [1] => 1 ) )

常规演示 中小系统推荐使用

创建模型层 /model/test.php

<?php
/**
  模型层, 类的命名方式 规范注意第4条
 /
class model_test {
    /**
      描述 : 返回传递前端的参数
     /
    public static function argv() {
        return '后台参数传递到视图层';
    }
}

创建控制层 /ctrl/test.php 文件

<?php
/**
  控制层
 /
class ctrl_test extends L {                                 //L内提供了快速访问的方法,如数据库,语言包,组件等静态方法 继承后使用更方便
    /**
      描述 : 在入口文件中我们定义了默认请求方法为index
     /
    public function index() {                               //通过index.php?c=ctrl_test访问
        echo '这个默认的加载方法';
    }

    /**       描述 : 使用视图层      /     public function view() {                                //通过index.php?c=ctrl_test&a=view访问         $this->view->argA = model_test::argv();             //向视图层传递数据,没继承L,可以操作 of_view::inst() 返回的对象         $this->view->argB = of_base_com_str::uniqid();      //生成唯一值         $this->view->argC = '<input>';                      //属性不带下划线的会被编码         $this->view->_argD = '<input>';                     //属性带下划线的不会被编码         $this->display('/test.html');                       //加载视图模板,映射的方法是 of_view::display(模板路径)     } } return true;                                                //安全校验,允许访问的文件返回值必须与控制层校验值相同

创建视图层 /view/test.html

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>使用模板引擎作为试图</title>
</head>
<body>
    <input _value="$this->argA" value="编译前">
    <input _value="$this->argB" value="唯一值">
    <!--<?
    echo $this->argC, $this->_argD;
    ?>-->
</body>
</html>

运行 /?c=ctrl_test&a=view 结果如下

<input>

命名空间 大型系统推荐使用

修改入口文件 /index.php

<?php
/**
  描述 : 控制层共享文件, 控制层文件与类名相同, 以$_GET['a']作为方法名(默认index)
 /
//加载核心
require dirname(FILE) . '/include/of/of.php';

//调度代码 if (isset($_GET['c'])) {     //类名, 动作, 安全校验     $result = of::dispatch(         strtr($GET['c'], '', '\'),                               //改成使用命名方式调用         isset($_GET['a']) ? $_GET['a'] : 'index',         PHP_SAPI === 'cli' ? null : true     );     //返回数组转成json     if (is_array($result)) echo \of\base\com\data::json($result);   //依然可以是 of_base_com_data 方式调用 }

创建模型层 /model/test.php

<?php
namespace model;
/**
  模型层
 /
class test {
    /**
      描述 : 返回传递前端的参数
     /
    public static function argv() {
        return '后台参数传递到视图层';
    }
}

创建控制层 /ctrl/test.php 文件

<?php
namespace ctrl;
use of\base\com\str;

/**   控制层  / class test extends \L {                                    //L是根命名空间, 故需要用"&quot;     /**       描述 : 定义的默认请求方法为index      /     public function index() {         echo '这个默认的加载方法';     }

    /**       描述 : 使用视图层      /     public function view() {         $this->view->argA = \model\test::argv();         $this->view->argB = str::uniqid();         $this->display('/test.html');     } } return true;

创建视图层 /view/test.html

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>使用模板引擎作为试图</title>
</head>
<body>
    <input _value="$this->argA" value="编译前">
    <input _value="$this->argB" value="唯一值">
</body>
</html>

运行 /?c=ctrl_test&a=view 结果如下


Clone this wiki locally