精华内容
下载资源
问答
  • 与民航的CDM、A-CDM系统相关的时间和时刻解释

    以下专有词汇与民航的CDM、A-CDM系统相关,经网络整理而得出。


    序号 简称 中文全称 描述
    1 ACGT 实际开始地服时刻 相当于AIBT(实际进机位时间)
    2 ACZT 实际开始除冰时刻
    3 ADIT 实际除冰持续时间 等于AEZT-ACZT
    4 AEGT 实际地服结束时刻 相当于ARDT(实际准备好)
    5 AEZT 实际除冰结束时刻
    6 AGHT 实际地服持续时间
    7 AIBT 实际上轮档时刻 航空器到机位上好轮档的时刻
    8 ALDT 实际着陆时刻 航空器着陆在跑道上的时刻
    9 AOBT 实际撤轮档时刻 航空器从机位推出的时刻
    10 ARDT 实际准备好(推开)时刻 航空器准备好推出开车或在获取放行许可后立刻可以滑出的时刻,满足所有舱门关闭,撤廊桥完成,推车就位,收到许可后可立刻推出/开车的时刻
    11 ARZT 准备好除冰的时刻 航空器可以开始除冰的时刻
    12 ASAT 实际许可开车时刻 航空器收到开车许可的时刻
    13 ASBT 时刻开始登记时刻 旅客登上廊桥或摆渡车的时刻
    14 ASRT 实际申请开车时刻 飞行员申请开车时刻
    15 ATOT 实际起飞时刻 航空器从跑道起飞的时刻
    16 ATTT 实际过站时间 等于AOBT-AIBT
    17 AXIT 实际滑入时间 等于AIBT-ALDT
    18 AXOT 实际滑出时间 等于ATOT-AOBT
    19 CTOT 计算起飞时刻 空管部门计算并发布离地时刻
    20 COBT 计算撤轮档时间 等于CTOT-EXOT
    21 CODT 协调起飞时刻 协调起飞时刻
    22 ECZT 预计开始除冰时刻 除冰预计开始的时刻
    23 EDIT 预计除冰持续时间 等于EEZT-ECZT
    24 EEZT 预计结束除冰时刻 航空器除冰预计结束的时刻
    25 EIBT 预计上轮档时刻 航空器预计上轮档时刻
    26 ELDT 预计着陆时刻 航空器预计接地的时刻
    27 EOBT 预计撤轮档时刻 预计撤轮档时刻
    28 ERZT 预计准备好除冰时刻 航空器预计开始进行除冰操作的时刻
    29 ETD 计划起飞时刻
    30 ETO 预计飞越时刻
    31 ETOT 预计起飞时刻 等于EOBT+EXOT
    32 ETTT 预计过站时间
    33 EXIT 预计进港滑行时间 预计从着陆到上轮档的时间
    34 EXOT 预计出港滑行时间 预计从撤轮档到起飞的滑行时间。该预计时间应考虑跑道头等待或起飞前除冰时间
    35 MTTT 最短过站时间 由航空承运人及地面服务单位认可并提供的特定航班或机型的最小过站时间
    36 SIBT 计划上轮档时刻 航空器计划进入(首次分配的)机位的时刻
    37 SID 起飞离港程序
    38 SOBT 计划撤轮档时刻 计划撤轮档时刻
    39 STTT 计划过站时间 等于SOBT-SIBT
    40 TOBT 目标撤轮档时刻 航空器将要准备好,所有舱门关闭,撤廊桥完成,推车就位,收到许可后可立刻推出/开车的时刻。
    41 TSAT 目标许可开车时刻 管制员根据交通状况,考虑了TOBT、CTOT后给出的航空器预计许可开车时刻
    42 TLDT 目标着陆时刻 由进场管理程序根据跑道序列及约束条件生成的过跑道入口目标时刻,该时刻并不是一个硬性要求,而是经过优化的着陆时刻,用以完成起降航班的协同。每个航班的TLDT都应满足同一跑道的尾流间隔及起降间隔要求。
    43 TTOT 目标起飞时刻 目标起飞时刻都考虑了TOBT/TSAT+EXOT。每个航班的TTOT都应满足同一跑道的尾流间隔及起降间隔要求。

    展开全文
  • tp中的M,D,C,A,I,S方法

    万次阅读 2017-02-09 09:26:53
    才开始接触tp,对里面的大写字母方法不是很理解。现在清晰多了。...如果D方法没有找到定义的模型类,则会自动调用M方法.M方法//使用M方法实例化 $User = M('User'); //和用法$User = new \Think\Model ('

    才开始接触tp,对里面的大写字母方法不是很理解。现在清晰多了。

    D方法实例化模型类的时候通常是实例化某个具体的模型类,如果仅仅是对数据表进行基本的CURD操作的话,可以使用M方法.由于不要加载具体的模型类,所以性能会更好.如果D方法没有找到定义的模型类,则会自动调用M方法.

    M方法

    //使用M方法实例化
    $User = M('User');
    //和用法$User = new \Think\Model ('User');等效
    //执行其他的数据操作
    $User->select();

    M 方法也支持垮库操作.

    //使用M方法实例化,操作db_name中的ot_user表
    $User = M('db_name.User','ot_');
    //执行其他的数据库操作
    $User->select();

    M方法的参数和\Think\Model的参数是一样的,所以我们可以这样操作:

    $New = M('new','think_',$connection);
    //等效于$New = new  \Think\Model('new','think_',$connection);

    M方法实例化的时候.默认的是直接实例化\Think\Model类,如果要实例化其他的公共模型类,可以使用下面:

    $User = M('\Home\Model\CommonModel:User','think_','db_config');
    相当于$User = new \Home\Model\CommonModel('User','think_','db_config');

    实例化基础模型类(Model)
    在没有定义任何模型的时候,可以使用下面的操作.这种方法简单高效,但是缺点就是没有自定义的模型类,无法写入相关的业务逻辑.只能完成基本的CURD操作.如果你的模型类中有自己的业务逻辑,是无法使用M方法的.

    //实例化User模型
    $User = new Model('User');
    //或者使用M()快捷方法实例化,和上面的方法是等效的
    $User = M('User');
    //执行其他的数据操作
    $User->select();

    实例化其他模型类

    • 第一种因为没有模型类的定义,很难封装一些额外的逻辑方法.如果只是需要扩展一些通用的逻辑,可以尝试下面方法
    $User = new CommonModel('User');
    • 模型的实例化方法有三个参数,第一个参数是模型名称,第二个参数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个参数用于设置当前使用的数据库连接信息(留空则取当前项目配置的数据库连接信息).
    $User = new CommonModel('User','think_','db_config');
    • 第三个使用M方法
     $User = M('CommonModel:User','think_','db_config');

    M方法默认是实例化model类

    D方法

    <?php
    //实例化模型
    $User = D('User');
    //相当于$User = new \Home\Model\UserModel();
    //执行操作
    $User -> select();

    如果Home\Model\UserModel不存在的话,就会尝试实例化公共模型下的\Common\Model\UserModel类.
    D方法的参数就是实例的名称.并且和模型类的大小写定义是一致的.

    参数 实例化的模型文件(假设当前模块为Home)
    User 对应的模型类文件的 \Home\Model\UserModel.class.php
    UserType 对应的模型类文件的 \Home\Model\UserTypeModel.class.php

    如果在Liunx下,要注意大小写

    D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的\Think\Model基类,同时对于已实例化过的模型,不会重复去实例化

    //D方法还可以跨模块调用,需要使用
    //实例化Admin的User模型
    D('Admin/User');
    //实例化Extend扩展命名空间下的Info模型
    D('Extend://Editor/Info'):

    注意:跨模块实例化模型类的时候,不支持自动加载公共模块的模型类。

    C方法

    定义了配置文件之后,可以使用系统提供的C方法来读取已有额配置.
    - 获取已经设置的参数值:C(‘参数名称’)

    $model = C('URL_MODEL');//不区分大小写=url_model

    but 大写是比较规范的.
    注意:配置参数名称中不能含有”.”和特殊字符
    如果URL_MODEL尚未存在设置,则返回NULL.

    //如果是3.2.1版本的话,支持设置默认值.such as
    C('my_config','null','default_config');
    //如果my_config没有设置的话,则返回default_config

    C方法ue可以用于读取二维配置:

    //获取用户配置中的用户类型设置
    C('USER_CONFIG.USER_TYPE');

    因为配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数以及生效过期了

    A方法

    如果需要跨控制机调用的话,可以单独实例化

    //实例化Home模块的User控制器
    $User = new \Home\Controller\UserController();
    //实例化Admin模块的blog控制器
    $Blog = new \Admin\Controller\BlogController();

    上面的代码是不是很多,这里提供了一个快捷调用方法A
    简化后如下

    //假设当前模块是Home模块
    $User = A('User');
    $Blog = A('Admin/Blog');

    默认情况下,A方法实例化的是默认控制器(Controller),如果你要实例化其他的分层控制器的话,可以使用

    //假设当前模块是Home
    //实例化Event控制器
    $User  = A('User');// 等效于new \Home\Event\UserEvent();
    $Blog  = A('Admin/Blog','Event');// 等效于new \Admin\Event\BlogEvent();

    I方法

    在web开发过程中,我们经常要获取系统变量或者用户提交的数据.这些数据处理不好就会引起安全隐患,所以tp给我们提供了一个变量获取功能.
    我们先看下传统获取方式:

    $id = $_GET['id']; // 获取get变量
    $name = $_POST['name']; // 获取post变量
    $value = $_SESSION['var']; // 获取session变量
    $name = $_COOKIE['name']; // 获取cookie变量
    $file = $_SERVER['PHP_SELF']; // 获取server变量

    传统获取方法没有统一的安全机制,后期调整比较麻烦,更好的方式是在框架中统一使用I函数进行变量获取和过滤。
    I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:

    I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源'])

    变量类型是指请求方式或者输入类型

    变量类型 含义
    get 获取GET参数
    post 获取POST参数
    param 自动判断请求类型获取GET、POST或者PUT参数
    request 获取REQUEST 参数
    put 获取PUT 参数
    session 获取 $_SESSION 参数
    cookie 获取 $_COOKIE 参数
    server 获取 $_SERVER 参数
    globals 获取 $GLOBALS参数
    path 获取 PATHINFO模式的URL参数
    data 获取 其他类型的参数,需要配合额外数据源参数

    注意:变量类型不区分大小写,变量名则严格区分大小写。 默认值和过滤方法均属于可选参数。
    下面是I方法的范例使用

    echo I('get.id'); // 相当于 $_GET['id']
    echo I('get.name'); // 相当于 $_GET['name']

    支持默认值:

    echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0
    echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串

    采用方法过滤:

    // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串
    echo I('get.name','','htmlspecialchars');

    支持直接获取整个变量值

    // 获取整个$_GET 数组
    I('get.');

    用同样的方式,我们可以获取post或者其他输入类型的变量

    I('post.name','','htmlspecialchars');
     // 采用htmlspecialchars方法对$_POST['name'] 进行过滤,如果不存在则返回空字符串
    I('session.user_id',0); 
    // 获取$_SESSION['user_id'] 如果不存在则默认为0
    I('cookie.');
     // 获取整个 $_COOKIE 数组
    I('server.REQUEST_METHOD');
     // 获取 $_SERVER['REQUEST_METHOD']

    param变量类型是框架特有的支持自动判断当前请求类型的变量获取方式,例如:

    echo I('param.id');

    如果当前请求类型是GET,那么等效于 GET[id]POSTPUT_POST[‘id’] 或者 PUT参数id。
    由于param类型是I函数默认获取的变量类型,因此事实上param变量类型的写法可以简化为:

    I('id'); 
    // 等同于 I('param.id')
    I('name'); 
    // 等同于 I('param.name')

    path类型变量可以用于获取URL参数(必须是PATHINFO模式参数有效,无论是GET还是POST方式都有效),例如: 当前访问URL地址是 http://serverName/index.php/New/2013/06/01

    echo I('path.1');
     // 输出2013
    echo I('path.2');
     // 输出06
    echo I('path.3');
     // 输出01

    data类型变量可以用于获取不支持的变量类型的读取,例如:

    I('data.file1','','',$_FILES);

    变量过滤
    如果你没有在调用I函数的时候指定过滤方法的话,系统会采用默认的过滤机制(由DEFAULT_FILTER配置),事实上,该参数的默认设置是:

    // 系统默认的变量过滤机制
    'DEFAULT_FILTER' => 'htmlspecialchars'

    也就说,I方法的所有获取变量如果没有设置过滤方法的话都会进行htmlspecialchars过滤,那么:

    // 等同于 htmlspecialchars($_GET['name'])
    I('get.name');

    同样,该参数也可以设置支持多个过滤,例如:

    'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'

    设置后,我们在使用:

    // 等同于 htmlspecialchars(strip_tags($_GET['name']))
    I('get.name');

    如果我们在使用I方法的时候 指定了过滤方法,那么就会忽略DEFAULT_FILTER的设置,例如:

    // 等同于 strip_tags($_GET['name'])
    echo I('get.name','','strip_tags');

    I方法的第三个参数如果传入函数名,则表示调用该函数对变量进行过滤并返回(在变量是数组的情况下自动使用array_map进行过滤处理),否则会调用PHP内置的filter_var方法进行过滤处理,例如:

    I('post.email','',FILTER_VALIDATE_EMAIL);

    表示 会对$_POST[‘email’] 进行 格式验证,如果不符合要求的话,返回空字符串。 (关于更多的验证格式,可以参考 官方手册的filter_var用法。) 或者可以用下面的字符标识方式:

    I('post.email','','email');

    可以支持的过滤名称必须是filter_list方法中的有效值(不同的服务器环境可能有所不同),可能支持的包括:

    int
    boolean
    float
    validate_regexp
    validate_url
    validate_email
    validate_ip
    string
    stripped
    encoded
    special_chars
    unsafe_raw
    email
    url
    number_int
    number_float
    magic_quotes
    callback

    还可以支持进行正则匹配过滤,例如:

    // 采用正则表达式进行变量过滤
    I('get.name','','/^[A-Za-z]+$/');
    I('get.id',0,'/^\d+$/');

    如果正则匹配不通过的话,则返回默认值。
    在有些特殊的情况下,我们不希望进行任何过滤,即使DEFAULT_FILTER已经有所设置,可以使用:

    // 下面两种方式都不采用任何过滤方法
    I('get.name','','');
    I('get.id','',false);

    一旦过滤参数设置为空字符串或者false,即表示不再进行任何的过滤。
    最新版本的I函数支持对变量使用修饰符功能,可以更方便的通过类型过滤变量。

    I('变量类型.变量名/修饰符')
    I('get.id/d'); 
    // 强制变量转换为整型
    I('post.name/s'); 
    // 强制转换变量为字符串类型
    I('post.ids/a'); 
    // 强制变量转换为数组类型

    可以使用的修饰符包括:

    修饰符 作用
    s 强制转换为字符串类型
    d 强制转换为整型类型
    b 强制转换为布尔类型
    a 强制转换为数组类型
    f 强制转换为浮点类型

    S方法

    展开全文
  • TP框架中的M,D,C,A,I,S方法

    万次阅读 2017-02-09 21:25:50
    M方法 M实例化参数是数据库的表名 //使用M方法实例化$User = M('User');//和用法$User = new /Think/Model ('User');等效//执行其他的数据操作$User->select(); M 方法也支持垮库操作. //使用M方法实例化,...

    M方法

    M实例化参数是数据库的表名

    //使用M方法实例化$User = M('User');//和用法$User = new /Think/Model ('User');等效//执行其他的数据操作$User->select();

    M 方法也支持垮库操作.

    //使用M方法实例化,操作db_name中的ot_user表$User = M('db_name.User','ot_');//执行其他的数据库操作$User->select();

    M方法的参数和/Think/Model的参数是一样的,所以我们可以这样操作:

    $New = M('new','think_',$connection);//等效于$New = new  /Think/Model('new','think_',$connection);

    M方法实例化的时候.默认的是直接实例化/Think/Model类,如果要实例化其他的公共模型类,可以使用下面:

    $User = M('/Home/Model/CommonModel:User','think_','db_config');相当于$User = new /Home/Model/CommonModel('User','think_','db_config');

    实例化基础模型类(Model) 
    在没有定义任何模型的时候,可以使用下面的操作.这种方法简单高效,但是缺点就是没有自定义的模型类,无法写入相关的业务逻辑.只能完成基本的CURD操作.如果你的模型类中有自己的业务逻辑,是无法使用M方法的.

    //实例化User模型$User = new Model('User');//或者使用M()快捷方法实例化,和上面的方法是等效的$User = M('User');//执行其他的数据操作$User->select();

    实例化其他模型类

    • 第一种因为没有模型类的定义,很难封装一些额外的逻辑方法.如果只是需要扩展一些通用的逻辑,可以尝试下面方法
    $User = new CommonModel('User');
    • 模型的实例化方法有三个参数,第一个参数是模型名称,第二个参数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个参数用于设置当前使用的数据库连接信息(留空则取当前项目配置的数据库连接信息).
    $User = new CommonModel('User','think_','db_config');
    • 第三个使用M方法
     $User = M('CommonModel:User','think_','db_config');

    M方法默认是实例化model类

    D方法

    D实例化的是你自己在Model文件夹下面建立的模型文件。
    D就是在你没有定义模型的时候,系统自动帮你定义一个模型,这样你才进行简单的数据输入或者输出。
    每一个Action文件都应该对应Model文件的,如果你定义了Model的话,
    如:$Form = D(“User”)就可以改成$Form = new  UserModel();(User是指你的模型文件名)。

    <?php//实例化模型$User = D('User');//相当于$User = new /Home/Model/UserModel();//执行操作$User -> select();

    如果Home/Model/UserModel不存在的话,就会尝试实例化公共模型下的/Common/Model/UserModel类. 
    D方法的参数就是实例的名称.并且和模型类的大小写定义是一致的.

    参数 实例化的模型文件(假设当前模块为Home)
    User 对应的模型类文件的 /Home/Model/UserModel.class.php
    UserType 对应的模型类文件的 /Home/Model/UserTypeModel.class.php

    如果在Liunx下,要注意大小写

    D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的/Think/Model基类,同时对于已实例化过的模型,不会重复去实例化

    //D方法还可以跨模块调用,需要使用//实例化Admin的User模型D('Admin/User');//实例化Extend扩展命名空间下的Info模型D('Extend://Editor/Info'):

    注意:跨模块实例化模型类的时候,不支持自动加载公共模块的模型类。

    C方法

    定义了配置文件之后,可以使用系统提供的C方法来读取已有额配置. 
    - 获取已经设置的参数值:C(‘参数名称’)

    $model = C('URL_MODEL');//不区分大小写=url_model

    but 大写是比较规范的. 
    注意:配置参数名称中不能含有”.”和特殊字符 
    如果URL_MODEL尚未存在设置,则返回NULL.

    //如果是3.2.1版本的话,支持设置默认值.such asC('my_config','null','default_config');//如果my_config没有设置的话,则返回default_config

    C方法ue可以用于读取二维配置:

    //获取用户配置中的用户类型设置C('USER_CONFIG.USER_TYPE');

    因为配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数以及生效过期了

    A方法

    如果需要跨控制机调用的话,可以单独实例化

    //实例化Home模块的User控制器$User = new /Home/Controller/UserController();//实例化Admin模块的blog控制器$Blog = new /Admin/Controller/BlogController();

    上面的代码是不是很多,这里提供了一个快捷调用方法A 
    简化后如下

    //假设当前模块是Home模块$User = A('User');$Blog = A('Admin/Blog');

    默认情况下,A方法实例化的是默认控制器(Controller),如果你要实例化其他的分层控制器的话,可以使用

    //假设当前模块是Home//实例化Event控制器$User  = A('User');// 等效于new /Home/Event/UserEvent();$Blog  = A('Admin/Blog','Event');// 等效于new /Admin/Event/BlogEvent();

    I方法

    在web开发过程中,我们经常要获取系统变量或者用户提交的数据.这些数据处理不好就会引起安全隐患,所以tp给我们提供了一个变量获取功能. 
    我们先看下传统获取方式:

    $id = $_GET['id']; // 获取get变量$name = $_POST['name']; // 获取post变量$value = $_SESSION['var']; // 获取session变量$name = $_COOKIE['name']; // 获取cookie变量$file = $_SERVER['PHP_SELF']; // 获取server变量

    传统获取方法没有统一的安全机制,后期调整比较麻烦,更好的方式是在框架中统一使用I函数进行变量获取和过滤。 
    I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:

    I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源'])

    变量类型是指请求方式或者输入类型

    变量类型 含义
    get 获取GET参数
    post 获取POST参数
    param 自动判断请求类型获取GET、POST或者PUT参数
    request 获取REQUEST 参数
    put 获取PUT 参数
    session 获取 $_SESSION 参数
    cookie 获取 $_COOKIE 参数
    server 获取 $_SERVER 参数
    globals 获取 $GLOBALS参数
    path 获取 PATHINFO模式的URL参数
    data 获取 其他类型的参数,需要配合额外数据源参数

    注意:变量类型不区分大小写,变量名则严格区分大小写。 默认值和过滤方法均属于可选参数。 
    下面是I方法的范例使用

    echo I('get.id'); // 相当于 $_GET['id']echo I('get.name'); // 相当于 $_GET['name']

    支持默认值:

    echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串

    采用方法过滤:

    // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串echo I('get.name','','htmlspecialchars');

    支持直接获取整个变量值

    // 获取整个$_GET 数组I('get.');

    用同样的方式,我们可以获取post或者其他输入类型的变量

    I('post.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_POST['name'] 进行过滤,如果不存在则返回空字符串I('session.user_id',0); // 获取$_SESSION['user_id'] 如果不存在则默认为0I('cookie.'); // 获取整个 $_COOKIE 数组I('server.REQUEST_METHOD'); // 获取 $_SERVER['REQUEST_METHOD']

    param变量类型是框架特有的支持自动判断当前请求类型的变量获取方式,例如:

    echo I('param.id');

    如果当前请求类型是GET,那么等效于 GET[′id′],如果当前请求类型是POST或者PUT,那么相当于获取_POST[‘id’] 或者 PUT参数id。 
    由于param类型是I函数默认获取的变量类型,因此事实上param变量类型的写法可以简化为:

    I('id'); // 等同于 I('param.id')I('name'); // 等同于 I('param.name')

    path类型变量可以用于获取URL参数(必须是PATHINFO模式参数有效,无论是GET还是POST方式都有效),例如: 当前访问URL地址是 http://serverName/index.php/New/2013/06/01

    echo I('path.1'); // 输出2013echo I('path.2'); // 输出06echo I('path.3'); // 输出01

    data类型变量可以用于获取不支持的变量类型的读取,例如:

    I('data.file1','','',$_FILES);

    变量过滤 
    如果你没有在调用I函数的时候指定过滤方法的话,系统会采用默认的过滤机制(由DEFAULT_FILTER配置),事实上,该参数的默认设置是:

    // 系统默认的变量过滤机制'DEFAULT_FILTER' => 'htmlspecialchars'

    也就说,I方法的所有获取变量如果没有设置过滤方法的话都会进行htmlspecialchars过滤,那么:

    // 等同于 htmlspecialchars($_GET['name'])I('get.name');

    同样,该参数也可以设置支持多个过滤,例如:

    'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'

    设置后,我们在使用:

    // 等同于 htmlspecialchars(strip_tags($_GET['name']))I('get.name');

    如果我们在使用I方法的时候 指定了过滤方法,那么就会忽略DEFAULT_FILTER的设置,例如:

    // 等同于 strip_tags($_GET['name'])echo I('get.name','','strip_tags');

    I方法的第三个参数如果传入函数名,则表示调用该函数对变量进行过滤并返回(在变量是数组的情况下自动使用array_map进行过滤处理),否则会调用PHP内置的filter_var方法进行过滤处理,例如:

    I('post.email','',FILTER_VALIDATE_EMAIL);

    表示 会对$_POST[‘email’] 进行 格式验证,如果不符合要求的话,返回空字符串。 (关于更多的验证格式,可以参考 官方手册的filter_var用法。) 或者可以用下面的字符标识方式:

    I('post.email','','email');

    可以支持的过滤名称必须是filter_list方法中的有效值(不同的服务器环境可能有所不同),可能支持的包括:

    intbooleanfloatvalidate_regexpvalidate_urlvalidate_emailvalidate_ipstringstrippedencodedspecial_charsunsafe_rawemailurlnumber_intnumber_floatmagic_quotescallback

    还可以支持进行正则匹配过滤,例如:

    // 采用正则表达式进行变量过滤I('get.name','','/^[A-Za-z]+$/');I('get.id',0,'/^/d+$/');

    如果正则匹配不通过的话,则返回默认值。 
    在有些特殊的情况下,我们不希望进行任何过滤,即使DEFAULT_FILTER已经有所设置,可以使用:

    // 下面两种方式都不采用任何过滤方法I('get.name','','');I('get.id','',false);

    一旦过滤参数设置为空字符串或者false,即表示不再进行任何的过滤。 
    最新版本的I函数支持对变量使用修饰符功能,可以更方便的通过类型过滤变量。

    I('变量类型.变量名/修饰符')
    I('get.id/d'); // 强制变量转换为整型I('post.name/s'); // 强制转换变量为字符串类型I('post.ids/a'); // 强制变量转换为数组类型

    可以使用的修饰符包括:

    修饰符 作用
    s 强制转换为字符串类型
    d 强制转换为整型类型
    b 强制转换为布尔类型
    a 强制转换为数组类型
    f 强制转换为浮点类型

    S方法

    读取数据缓存,而且是要设置 DATA_CACHE_TYPE 配置

    在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,直接采用S方法即可,例如:

    
     
    1. // 缓存初始化
    2. S(array('type'=>'xcache','expire'=>60));

    缓存初始化可以支持的参数根据不同的缓存方式有所区别,常用的参数是:

    参数 描述
    expire 缓存有效期(时间为秒)
    prefix 缓存标识前缀
    type 缓存类型

    系统目前已经支持的缓存类型包括:Apachenote、Apc、Db、Eaccelerator、File、Memcache、Redis、Shmop、Sqlite、Wincache和Xcache

    如果S方法不传入type参数初始化的话,则读取配置文件中设置的DATA_CACHE_TYPE参数值作为默认类型。同样的道理,prefix参数如果没有传入会读取配置文件的DATA_CACHE_PREFIX参数值,expire参数没有传入则读取DATA_CACHE_TIME配置值作为默认。

    有些缓存方式会有一些自身特殊的参数,例如Memcache缓存,还需要配置其他的参数:

    
     
    1. S(array(
    2. 'type'=>'memcache',
    3. 'host'=>'192.168.1.10',
    4. 'port'=>'11211',
    5. 'prefix'=>'think',
    6. 'expire'=>60)
    7. );

    对于全局的缓存方式,一般我们建议添加prefix(缓存前缀)参数用以区分不同的应用,以免混淆。

     

    【PHPer技术栈】专注后端开发,倡导开源文化,做一个好玩、有趣、有灵魂的PHPer工程师,欢迎大家关注!、

     

    展开全文
  • 事务的四大特性( A C I D )

    千次阅读 2020-03-14 16:10:51
    一、原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功 要么全部失败回滚 因此 事务的操作如果成功就必须要完全应用到数据库 如果操作失败则不...例:转账时 用户A和用户B两者的钱加起来一共是5000 那...

    一、原子性(Atomicity)

    原子性是指事务包含的所有操作要么全部成功 要么全部失败回滚
    因此 事务的操作如果成功就必须要完全应用到数据库 如果操作失败则不能对数据库有任何影响

    二、一致性(Consistency)

    一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态
    也就是说一个事务执行之前和执行之后都必须处于一致性状态

    例:转账时 用户A和用户B两者的钱加起来一共是5000 那么不管A和B之间如何转账 转几次账 事务结束后两个用户的钱相加起来应该还得是5000

    三、隔离性(Isolation)

    隔离性是当多个用户并发访问数据库时 比如操作同一张表时 数据库为每一个用户开启的事务不能被其他事务的操作所干扰
    多个并发事务之间要相互隔离

    即 对于任意两个并发的事务T1和T2 在事务T1看来 T2要么在T1开始之前就已经结束 要么在T1结束之后才开始
    每个事务都感觉不到有其他事务在并发地执行

    四、持久性(Durability)

    持久性是指一个事务一旦被提交了 那么对数据库中的数据的改变是永久性的 即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作

    例如:在使用JDBC操作数据库时 在提交事务方法后 提示用户事务操作完成
    当程序执行完成直到看到提示后就可以认定事务以及正确提交 即使这时候数据库出现了问题也必须要将的事务完全执行完成
    否则就会造成看到提示事务处理完毕 但是数据库因为故障而没有执行事务的重大错误


    展开全文
  • 1、[系统摘要] 项目 数值 OS 名称 Microsoft Windows 2000 Server 版本 5.0.2195 Service Pack 4 内部版本号 2195 OS 制造商 Microsoft Corporation 系统制造商 Dell Computer Corporation
  • 编译 Android 系统源码 并烧写到开发板上去
  • 1 引言 I2C总线是Philips公司推出的串行总线,整个系统仅靠数据线(SDA)和时钟线(SCL)实现完善的全双工数据传输,即CPU与各个... 在一个完整的单片机系统中,A/D转换芯片往往是必不可少的。PCF8591是一种具有I2
  • 与E x i t T h r e a d不同,E x i t T h r e a d总是撤消调用的线程,而Te r m i n a t e T h r e a d能够撤消任何线程。 h T h r e a d参数用于标识被终止运行的线程的句柄。当线程终止运行时,它的退出代码成为...
  • 房屋租赁系统C/C++

    千次阅读 多人点赞 2018-09-04 11:18:49
    试设计一房屋租赁信息系统,使之能提供以下功能: 房屋信息:房屋编码、房屋地址、房屋门牌号、价格等;要求对房屋信息进行添加、修改、删除、显示、查找等功能; 承租者信息:客户ID、姓名、籍贯、入住时间等;要求...
  • 若要使多线程CC + +程序能够正确地运行,必须创建一个数据结构,并将它与使用 C / C + +运行期库函数的每个线程关联起来。当你调用C / C + +运行期库时,这些函数必须知道查 看调用线程的数据块,这样就不会对别...
  • C/C++】C语言特性总结

    万次阅读 多人点赞 2019-08-10 16:21:28
    已经有大约半年的时间没有碰C语言了,当时学习的时候记录了很多的笔记,但是都是特别混乱,后悔那个时候,不懂得写博客,这里凭借记忆和零零散散的笔记记录,尝试系统性地复习一下C语言。 之前都是在Windows环境下...
  • 深入 WIN2000 注册表 (14) C O M +

    千次阅读 2008-01-03 14:40:00
    C O M + 简介C O M +是M i c r o s o f t旧式的组件对象模式(Component Object Model,C O M )技术功能强大的新版本。从Windows 2000开始,C O M +把许多以前独立的技术,例如M i c r o s o f t事务处理服务器...
  • w3m浏览器

    万次阅读 2017-12-24 23:33:47
    w3m是一个基于文本的网页浏览器,支持多种操作系统,在命令行终端可以很好的支持中文。即使在没有鼠标支持的情况下也可以检查网页的输出。本文列出常用的快捷键。 一、安装 在大多数的linux发行版本中并不默认...
  • 如何用linux系统编写c程序

    万次阅读 多人点赞 2016-10-12 10:28:54
    [TOC]为什么要写这一篇博客因大一上学期老师要求而开始使用linux系统编写c程序,而linux编写的模式与windows差别很大,所以写此文章记录自己的学习历程,也能为初学者提供帮助 (本博客在我学习linux过程将持续更新...
  • C/C++获取系统时间的函数

    千次阅读 2011-07-31 22:38:33
    一直使用C或C++在Windows上编成,习惯了使用Win API提供的日期时间处理函数,现在由于编写的是接口库,不能够在库里明确的指名使用win32,包含windows.h,一时间对c 和C++提供的日期时间函数还不知道怎么用,网上找了...
  • VC-终止线程,ExitThread函数,Te r m i n a t e T h r e a d函数,撤消线程,详解6.5 终止线程的运行若要终止线程的运行,可以使用下面的方法:• 线程函数返回(最好使用这种方法)。• 通过调用E x i t T h r e a d...
  • C课程设计——图书管理系统 1、题目意义 图书馆,作为文献的聚集地和展示平台,常常扮演着引领文化前进的角色,是每个大学不可或缺的基础设施,而图书管理系统则是一个图书馆能够正常运转的关键。本次课程设计使用...
  • c++/c获取系统时间,并格式化输出

    万次阅读 2010-04-25 16:21:00
    要求c/c++获取系统时间,并以中文格式化输出。第一反应,so简单。话说函数: 1、size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr ); 根据格式字符串生成字符
  • 目录 查看进程 ps top pstree 终止进程 kill killall pkill 后台进程 jobs fg bg 定时任务 crond crontab ...系统监控 ...命令用途:查看系统进程的状态。 命令语法:ps [选项] 常用选项...
  • C/C++获取当前系统时间

    万次阅读 2010-07-28 16:33:00
    //方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #include <time.h> #include <stdio.h> ...  strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );  put
  • Windows下C/C++获取当前系统时间

    千次阅读 2017-05-31 12:19:30
    Windows下CC获取当前系统时间方案一localtime 优点仅使用C标准库缺点只能精确到秒级 方案二GetLocalTime sys 优点能精确到毫秒级缺点使用了windows API  方案三systemtime方案四timenull方案五CTime如何在...
  • Android~adb卸载系统预装应用(亲测有效)

    万次阅读 热门讨论 2019-09-24 13:44:12
    本文介绍一种安卓卸载系统应用的方法,如果你和我一样喜欢瞎折腾,有那么一点强迫症,希望对你有用。作为一名安卓开发者,大学以前总喜欢刷不同刷机包(ROM)、爱装不同的Launcher桌面体验,不过工作了没以前爱折腾...
  • 从实现的角度:系统调用直接对文件和设备进行访问和控制的的一组底层接口, 而标准I/O库为地城I/O调用提供了一个通用的接口,系统调用直接跟底层打交道,系统调用移植性远不如标准I/O库好。 从性能的角度:使用系统...
  • 自己动手编译C程序并运行于Android系统准备工作搭建交叉编译环境搭建代码架构编译运行 准备工作 很多半路出家的安卓开发工程师并不了解怎么样在Android Studio上搭建交叉编译环境;不过没关系,不懂我们可以学习,...
  • 翻译:A Benchmark for the Evaluation of RGB-D SLAM Systems 原文链接:...本文提出了一种用于RGB-D SLAM系统评估的新的基准...
  • 构建自己的 Qt 插件系统

    万次阅读 多人点赞 2017-11-08 10:05:42
    Qt 本身提供了插件相关的技术,但并没有提供一个通用的插件框架!倘若要开发一个较大的 GUI 应用程序,并...根据深入理解插件系统一文,对插件系统有了一定的了解之后,我们可以很快的构建一个属于自己的 Qt 插件系统
  • <br />基于 J a v a S c r i p t 与 D B G R I D控件的 B / S结构客户端 联想式录入技术的设计与实现 赵成勇, 周 南, 邱小彬 ( 中国农业大学网络中心, 北京 1 0 0 0 8 3 )  1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 689,681
精华内容 275,872
关键字:

acdm系统