0

0

Onthink学习随笔,onthink随笔_PHP教程

php中文网

php中文网

发布时间:2016-07-13 10:12:37

|

987人浏览过

|

来源于php中文网

原创

Onthink学习随笔,onthink随笔

-------------------------------------(写代码不孤独_小小代)

用Onthink写了一个网站暂时还没上线功能略显不全没,完全没有发挥出应有的强大拓展之处,各种地方略显蹩脚。

但是其强大的数据表控制还是显漏一角,鉴于此进军基于开发的thinphp3.2.2世界。。。

第一天 完成手册序言,基础,配置,架构,路由阅读。

立即学习PHP免费学习笔记(深入)”;

第二天 完成控制器模型阅读   关于 附录阅读

知元AI
知元AI

AI智能语音聊天 对讲问答 AI绘画 AI写作 AI创作助手工具

下载

下面是阅读随录

*************************************************

use 表示引入什么 命名空间便于直接引用
函数的命名方法使用小写字母和下划线的方式
方法的命名 使用的小写字母和下划线  下划线的代表的是(一般私有方法 )
双下划线 打头的函数或方法作为魔法方法 __call
    养成使用I函数获取输入变量的好习惯;
    更新或者环境改变后遇到问题首要问题是清空Runtime目录;
惯例配置 应用配置 模式配置 调试配置 状态配置 模块配置
    惯例配置ThinkPHP/Conf/convention.php 应用配置是基于惯例配置的拓展    

Application/Common/Conf/config.php调用所有模块之前都会先加载的公共配置文件
 可选择的模式配置就是在应用配置文件夹新增 运行该模式才运行的文件config_应用名称.php
调试模式 开启就会加载ThinkPHP/Conf/debug.php和应用调试配置文件Application下的
状态配置就是手工分离
模块配置 Application/当前模块名/Conf/config.php
 读取配置文件
    定义了配置文件后,都统一使用系统提供C方法(可以借助Config)来读取或者设置
    配置参数名称不能含有'.'和特殊字符,允许的字母,数字和下划线 C方法可以读取二维
配置 配置参数是全局有效的     通过c配置的参数值是当前有效地不会写入数据库

URL详情 pathinfo模式说明
serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]
    公共的配置文件config.php 公共函数文件function.php可以把路径加载到common_path中
在入口文件当中配置,如果定义过后Application下面就不需要在加载Application
    3.2.2写在入口文件可以默认自动生成的模块,控制器。define('BIND_MODULE','xx')如

果想生成更多的控制器BUILD_CONTROLLER_LIST常量
    // 绑定Admin模块到当前入口文件
    define('BIND_MODULE','Admin');
    define('BUILD_CONTROLLER_LIST','Index,User,Menu');
    手动调用Think\Bulid类的方法来生成模型类\Think\Build::buildModel            

            ('Admin','Role');
//禁止访问模块 配置禁止访问的模块列表(用于被其他模块调用或者不开放访问),默认配置中

是禁止访问Common模块和Runtime模块(Runtime目录是默认的运行时目录),我们可以增加其他的

禁止访问模块列表:
    'MODULE_DENY_LIST'      =>  array('Common','Runtime','Api'),
设置访问列表
    允许访问列表和默认模块
    'MODULE_ALLOW_LIST'    =>    array('Home','Admin','User'),'DEFAULT_MODULE'     

      =>    'Home',
单模块设计 就是关闭多模块访问 MULTI_MODOULE=>false

多入口设计
    接受参数绑定模块
    // 绑定Home模块到当前入口文件$_GET['m'] = 'Home';
    define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
    绑定后http://serverName/index.php/Home/Index/index变成                

        http://serverName/home.php/Index/index(绑定后url不显示home)
URL区分大小写    URL_CASE_INSENSITIVE=>true
模型层    数据层,逻辑层,服务层,等不同的模型层  创建Model,Logic,sercive
调用的时候 用D方法很方便的调用 D('User','Logic');//实例化UserLogic D('User')则是实例化

UserModel .
更改系统默认的view层 DEFAULT_V_LAYER=>'Mobile';对于非默认视图层目录的模板获取使用T函

数获取。
控制器(Controller)层 核心控制器在系统内部的App类完成
    Event/UserEvent//用于用户的事件响应操作Controller负责的事外部的响应Event负责内

部的事件响应,并且只能在内部调用A('User','Event');

CBD模型
    Core(核心)+Behavior(行为)+Driver(驱动)

Driver(驱动)
  3.2在架构设计上更加强化了驱动的设计,替代了之前的引擎和模式扩展,并且改进了行为的设

计,使得框架整体更加灵活,并且由于在需要写入数据的功能类库中都采用了驱动化的设计思想,

所以使得新的框架能够轻松满足分布式部署的需求,对云平台的支持可以更简单的实现了。    
Behavior(行为)
  行为是一个比较抽象的概念,各个位置都会有行为的产生。
    有些行为是在应用执行之前,有些是在模板输出以后,我们把这些行为作为的位置成为标

签(位),也可以成为钩子, 当应用程序运行到这个标签的时候,就会被拦截下来,统一执行相关的

行为,类似于AOP编程中的“切面”的概念,给某一个标签绑定相关行为就成了一种类AOP编程的思

想。
    标签位
    tag函数用于设置某个标签位,可以传入并且只接受一个参数,如果需要传入多个参数,

请使用数组,    \Think\Hook::listen('my_tag');
    行为定义 必须定义执行入口方法run,由于行为的调用机制影响,在那调用在哪返回。
    行为绑定 行为定义后需要定义到某个标签位才能生效,否则是不会执行的。 需要在应用

的行为定义文件tags.php文件中进行行为和标签的位置定义。
    return array(     '标签名称1'=>array('行为名1','行为名2',...),      '标签名称    

    2'=>array('行为名1','行为名2',...),  );

3.2.1版本以上的,允许设置对应类库不使用命名空间。
        配置文件'APP_USE_NAMESPACE'    => false(继承调用系统类的时候,仍需要)
    3.2版本中实例化php内置的类库或者第三方的没有使用命名空间定义的类。
    $class =    new \stdClass();    $sxml  =    new \SimpleXmlElement($xmlstr);
自动加载 (命名空间自动加载)Library目录下面的命名空间都可以自动识别和定位。
    除了library目录下的命名空间以外,我们还可以定义其他的命名空间    

autoload_namespace
    提高效率 类库映射多个根命名空间Think\Think::addMap($map); $map=array();
    手动第三方类库导入import方法导入任何类库。
内置的缓存机制 和运行lite文件 新版本的特征 运行时生成静态的入口文件。

应用模式 应用模式就是增加自动识别区域

项目编译 应用编译缓存(首次运行的缓存)——运行Lite文件(入口静态)
-------------===========
路由定义
    url不为普通模式,开启路由可以在应用(或者模块)配置文件中开启路由
// 开启路由 'URL_ROUTER_ON'=〉true, 3.2路由是针对模块 所以模块名不能被路由,路由的定义

通常也是在模块配置文件中。
    路由表达式=〉路由地址和传入参数        array('路由表达式','路由地址','传入参    

数')
路由表达式
    正则表达式 /^blog\/(\d+)$/
    规则表达式 blog/:id
    
    完全匹配  $
    公共方法
-------
控制器
    如果要操作的方法是一个控制器的方法是与系统的关键字冲突,我们可以设置后缀的方法

解决 'ACTION_SUFFIX'=>  'Action', // 操作方法后缀
多级控制器 就是把控制器分组
实例化控制器 如果是内部的则在用url地址解析的时候就自动实例化了并且调用如果是跨控制器调

用的话则 实例化 然后使用快捷方法A调用(如果是多层次的话就使用A的第二个参数) 可以在实例

化的时候那方法实例化.

前置和后置操作 (仅对控制器有用)

常见的是_before_index前置方法 _after_index后置方法  如果没有定义前置后置方法,真正有模

板输出的可能仅仅是当前的操作,前置和后置操作一般情况下是没有任何输出的。调用错误成功操

作的话是没有后置操作的。
    控制器也可以绑定参数规则 action参数绑定    (按变量名能绑定 实现路由功能)
伪静态
    URL_HTML_SUFFIX=〉''   静态后缀记录到常量__EXT__(可以获取当前的后缀)
    URL_DENY_SUFFIX=〉不允许访问的后缀 多个用|隔开
    下面的优先级高于上面的
URL大小写 'URL_CASE_INSENSITIVE' =>true  不区分大小写的时候访问控制器大写要前加_
    系统提供U方法可以为你自动生成相关的URL地址

U    类似的(redirect)    (URL生成)
为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,

ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。    
    U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])
    [模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...
ajax返回 ajaxReturn
    可以接受 变量 数组 返回的数据可以治 JSON、JSONP、XML和EVAL 可以配置采用什么方    

式返回DEFAULT_AJAX_RETURN 进行返回  eval可以输出$data数据
      JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数    

    据交换格式,而JSONP是一种非官方跨域数据交互协议。一个是描述信息的格式,一个    

    是信息传递的

    
约定方法。

跳转和重定向
    $this->success(提示信息,地址,秒数)

----==--=-=
输入变量
    可以通过 I 函数进行变量获取和过滤
    I('变量类型.变量名',['默认值'],['过滤方法'],['额外数据源'])
    I函数自带就有DEFAULT_FILTER默认的是htmlspecialchars    (变量的过滤)

判断请求类型    (请求类型)
    is_XXX    如果是自定义的AJAX则需要添加隐藏域告诉后台是ajax提交的 如果是jquery的    

    话则不需要。  可以通过VAR_AJAX_SUBMI配置
空操作
     自动调用_empty(实现错误页面和一些url优化)
     空控制器系统尝试定到EmptyController
操作绑定到类      ACTION_BIND_CLASS=〉‘true’分的更加细致不能省略
        前置后置操作需要提前定义
-=-=-=-=-=-=-=-=-=-=-=-
    模型   大小写和_转换
        模型类直接实例化一般都继承model类 model一般有3个值 模型名数据表前缀数    

据库连接信息
        如果要写原生的sql代码 则只需要实例化空就好M();
    D (数据模型的实例化操作)
    方法的参数就是模型的名称,并且和模型类的大小写定义是一致的.
    类不存在的时候,D函数会尝试实例化公共模块下面的,还可以跨模块使用
    M(仅仅是对数据表进行基本的CURD操作)不需要加载具体的模型类,所以性能更高.
     不支持自己的业务逻辑
    我们在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模    

    型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动用M    

    方法。
字段缓存包括字段里面的字段信息 可以通过设置DB_FIELDS_CACHE来关闭字段自动缓存在项目配置

文件中增加该字段
    获取数据表的所有字段信息 getDbFields(); field(''/*);获取要调用所有字段field    

    (true).
    切换数据表用table(); 连接数据库的时候可以为连接加上标识
    系统默认规则,必须用模型execute 写操作  query 读操作
连贯操作 (链式操作)
    where可以和where连用
    data方法 是针对数据库写入的也可以用于更新(save)可以判断是否有主键 对象可以是数    

组,对象和字符串。可以进行读操作.
    field 获取字段,字段的排除filed(array('user_id','content'),true);就是user_id和

content之外的字段。 用于写入 (安全性的控制)不允许其他的写入  $model->field('name')-

>create();即表示表单中的合法字段只有name字段,无论用户通过什么手段更改或者添加了浏览器

的提交字段,都会直接屏蔽。因为,其他是所有字段我们都不希望由用户提交来决定,你可以通过

自动完成功能定义额外的字段写入。
    filert(字段内容的过滤)有点类似I的判断 $User->data($data)->filter        

    ('strip_tags')->add();过滤掉HTML标签  (支持回调类型的函数 可以是函数或者是闭包    

    定义)
    having方法是为了配合group方法从分组的结果中再次查询。
    cache  s
    comment    注释
    Create方法创建的数据对象是保存在内存中,并没有实际写入到数据库中,直到使用add

或者save方法才会真正写入数据库。add或者save之后才被写入数据库,因此在没有改变之前都可

以改变create对象.
    
----
find(读取一条字段)   select(读取字段集)  getField(读取字段值)[数字的更新setInc setDec]
delete()    [在没有任何的条件传入的时候是不会进行删除的类似于seve]

表单映射 数据获取的时候自动处理设置开启 'READ_DATA_MAP'=>true  
     也可以使用parseFieldsMap进行格式上的转换
查询方式
    数组 '_logic'='OR'    使用对象方式查询 stdClass  
    $map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');
    exp 表达式查询(exp查询的条件不会被当成字符串) 所有后面的查询条件可以使用任何的

sql支持的语法,包括使用函数和字段名称。查询表达式不仅可以用于查询条件,也可以用于数。

据更新。
$data['score'] = array('exp','score+1');// 用户的积分加1
$User->where('id=5')->save($data); // 根据条件保存修改的数据

多语言包的支持       L

*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_12_1
????????????????????????????????????????
多级控制器
实例化控制器
distinct  
(令牌验证)token
ORM   表映射到类 记录映射到对象
AR模式 ActiveRecord     一种简单的命令
怎么带有prefix就可以启用本地session管理的支持

*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_12_1

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/920432.htmlTechArticleOnthink学习随笔,onthink随笔 -------------------------------------(写代码不孤独_小小代) 用Onthink写了一个网站暂时还没上线功能略显不全没,完全...

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

65

2026.02.25

Steam官网正版入口与注册登录指南_新手快速进入游戏平台方法
Steam官网正版入口与注册登录指南_新手快速进入游戏平台方法

本专题系统整理Steam官网最新可用入口,涵盖网页版登录地址、新用户注册流程、账号登录方法及官方游戏商店访问说明,帮助新手玩家快速进入Steam平台,完成注册登录并管理个人游戏库。

6

2026.02.25

TypeScript全栈项目架构与接口规范设计
TypeScript全栈项目架构与接口规范设计

本专题面向全栈开发者,系统讲解基于 TypeScript 构建前后端统一技术栈的工程化实践。内容涵盖项目分层设计、接口协议规范、类型共享机制、错误码体系设计、接口自动化生成与文档维护方案。通过完整项目示例,帮助开发者构建结构清晰、类型安全、易维护的现代全栈应用架构。

9

2026.02.25

Python数据处理流水线与ETL工程实战
Python数据处理流水线与ETL工程实战

本专题聚焦 Python 在数据工程场景下的实际应用,系统讲解 ETL 流程设计、数据抽取与清洗、批处理与增量处理方案,以及数据质量校验与异常处理机制。通过构建完整的数据处理流水线案例,帮助开发者掌握数据工程中的性能优化思路与工程化规范,为后续数据分析与机器学习提供稳定可靠的数据基础。

0

2026.02.25

Java领域驱动设计(DDD)与复杂业务建模实战
Java领域驱动设计(DDD)与复杂业务建模实战

本专题围绕 Java 在复杂业务系统中的建模与架构设计展开,深入讲解领域驱动设计(DDD)的核心思想与落地实践。内容涵盖领域划分、聚合根设计、限界上下文、领域事件、贫血模型与充血模型对比,并结合实际业务案例,讲解如何在 Spring 体系中实现可演进的领域模型架构,帮助开发者应对复杂业务带来的系统演化挑战。

0

2026.02.25

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

18

2026.02.24

Golang 性能优化专题:提升应用效率
Golang 性能优化专题:提升应用效率

《Golang 性能优化专题》聚焦 Go 应用在高并发与大规模服务中的性能问题,从 profiling、内存分配、Goroutine 调度、GC 机制到 I/O 与锁竞争逐层分析。结合真实案例讲解定位瓶颈的方法与优化策略,帮助开发者建立系统化性能调优思维,在保证代码可维护性的同时显著提升服务吞吐与稳定性。

9

2026.02.24

Golang 面试题精选:高频问题与解答
Golang 面试题精选:高频问题与解答

Golang 面试题精选》系统整理企业常见 Go 技术面试问题,覆盖语言基础、并发模型、内存与调度机制、网络编程、工程实践与性能优化等核心知识点。每道题不仅给出答案,还拆解背后的设计原理与考察思路,帮助读者建立完整知识结构,在面试与实际开发中都能更从容应对复杂问题。

6

2026.02.24

Golang 运行与部署实战:从本地到云端
Golang 运行与部署实战:从本地到云端

《Golang 运行与部署实战》围绕 Go 应用从开发完成到稳定上线的完整流程展开,系统讲解编译构建、环境配置、日志与配置管理、容器化部署以及常见运维问题处理。结合真实项目场景,拆解自动化构建与持续部署思路,帮助开发者建立可靠的发布流程,提升服务稳定性与可维护性。

5

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 12.1万人学习

CSS3 教程
CSS3 教程

共18课时 | 6.1万人学习

Rust 教程
Rust 教程

共28课时 | 6.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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