ThinkPHP中疑难笔记
不但要记住核心的东西, 还要记住 相关的 东西: 如php cli的版本是 5.6.14 bulit: sep 30, 2015
tp中, 通常说的系统就是框架; 项目就是 "应用程序",就是"网站"
模板, 用Tpl表示, 为什么不用Tmp, 因为temp常常简写为tmp, 可能被误解为 "临时目录", 而tmpl则不会产生误解??
控制器为什么用m表示, 而不用c: controller表示?
第一, 好像c表示的是conifg, 配置, 而且, C函数也是用来访问配置情况的.
第二, 用m来 表示控制器, 其实控制器就是一个"模块", 一个module. 只是这个模块放在url请求路径中, 跟Model当然就不一样. 那你也不能说, m就是Model阿,它也可以表示module阿!
为什么叫控制器: 完全可以比对"遥控板的控制器的 概念": 理解控制器, 如同一个遥控板, 就是一个控制器, 一个具有多种操作功能的模块, 如遥控器, 可以开机, 关机, 选台, 调音量, 亮度等等, 它就是多种操纵方法的集合.
同样的, tp中的一个控制器, 表示的是 一组相互关联, 相互之间在逻辑上有关系的 多个 操作(一个操作就是一个成员函数) 的集合, 一个控制器就是一个模块, 就是一个*.class.php 文件, 一个类, 它包含多个 成员函数, 这些成员函数=方法, 就是表示多个操作. 控制器是从功能上来说的, 模块是从结构上来说的, 两者是统一的.
总之, 多个方法函数的集合体就是一个控制器, 就是一个模块. 这些方法操作的结果 , 就是 对应的视图(即网页, 页面). 如同遥控板控制器, 选台操作, 的结果就是 更换频道, 调节音量的结果就是 声音的增大或减小. 有了这样的理解, 今后组织网站逻辑功能的时候, 就可以更清楚的根据功能/操作的集合 ,写控制器, 模块了.
Aop: aspect oriented program, 面向方面的编程, 方面是指切面, 是多个不同的对象都 有公共的行为时, 如果对每个对象都封装相同的行为, 会造成代码的急剧重复增长, 如果新增/扩展对象也有这样的行为时, 也会出现同样的问题, 不便于扩展. 所以就把这样的公共行为提起出来,相当于把每个对象横切开来, 形成一个切面, 然后这个切面可以对每个对象完成相同的操作, 只要你传入相应的对象就号了.
在tp中, Aop是通过设计模式"代理"来实现的...
tp笔记
thinkphp中的常量:
为什么要使用常量?
其实这些所谓的常量也不是真的不变, 只是一些“伪常量”, 代表一些内容/配置/路径, 你完全可以写死, 只是为了代码的灵活性和 移植性的目的为什么要这么多常量?
因为在不同的 模块、 组件、 功能中, 需要不同的处理, 所以需要用不同的常量来表示/代表/处理。- 应该按分类来记忆这些变量
包括类别:
- 预定义常量, 不会随环境的变化而变化, 一旦下载的框架定了, 就是不变的, 相当于真的 常量
- 路径常量, 包括系统(框架的路径常量)和项目(网站程序)的目录路径常量, 用于系统默认的目录规范,如果不希望定制目录, 这些路径常量一般不需要更改。
- 系统常量,是指随着开发环境的改变、设置的改变而改变的。如: IS_POST,ROOT, APP_NAME, THINK_PATH之类的等。
- 注意, tp中的 惯例配置中, 也有很多(其实也是分类的) 大写的下划线连接的"变量", 注意那个不是常量, 那个是配置 key.
为什么要设置语言lang/zh-cn.php变量?
主要是为了在 程序中 输出 提示信息, 而且这些提示信息, 用有意义的、 “见名知义”的变量来表示,而不是用“随意的字符串信息”来表示, 便于 管理(一次修改提示信息,处处生效); 便于在程序中多次使用,不用每次都输入;使程序更规范, 而不是更随意, 符合软件工程!
ThinkPHP框架下:
common/functions是由tp框架提供的函数库, 如同c语言提供的函数库一样, 是一些基本操作,底层最基本的函数, 如同php提供的函数库一样, 是可以直接使用的, 如php语言提供的函数substr,strstr,strpos等函数可以直接使用一样。 主要是为了和后面的 类的对象中的 成员函数相区别。
框架提供的库Library包括几个:一是框架提供的核心类库Think, 然后是其他Org和Vendor和Behavior库
实际上 tphp3.2.3 可以叫thinkphp4.x, 相对于3.1.x 有很大的不同, 包括php_version>=5.3, 包括namespace, 等等.
thinkphp3.2.3 , 帮你 创建了 index.php文件, 和 应用目录application
在linux下, 要注意 文件和目录的模式, 读写权限..
只对于目录, 当添加其他用户的写权限时 , 将会用 黄色 highlight显示,提醒, 表示警告!(文件不会高亮显示警告)
在整个解压目录中, 就包括几样东西: index.php, Application/, ThinkPHP/ , Public/
ThinkPHP中疑难笔记的更多相关文章
- 关于thinkphp框架中模型笔记
模型这一块,感觉学习的不是很清楚,单独水一贴thinkphp中模型的学习笔记. 0x01 模型类简介 数据库中每一张表对应一个模型,类名就是表名,类里面的成员变量就是列名, 把一张表对应为一个类,其中 ...
- thinkphp一句话疑难解决笔记 2
php中的_ _call()方法? 它是php5后为对象 类 新增的一个自动方法. 它会监视类的其他方法的调用, 当调用类的不存在的方法时, 会自动调用类的__call方法. tp的 "命名 ...
- thinkphp一句话疑难解决笔记
URL_PATHINFO_DEPR, depr表示 网页路径"分隔符",用"-", 有利于seo,注意是从 sername/index.php(开始的)/hom ...
- 关于ThinkPhp中getField方法存在的问题
在ThinkPhp中我们可以通过以下方式获取数据库数据 query:直接执行SQL查询操作 find:查询单选数据集 getField查询字段值 select:查询数据集 其他...... 但今天 ...
- [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别
1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...
- thinkphp中的setInc、setDec方法
thinkphp中setInc.setDec方法 可用于统计字段(通常是数字类型的字段)的更新,例如积分,等级,登陆次数等 必须配合连贯操作where一起使用 $User = M("User ...
- iOS:项目中疑难Crash问题集锦
项目中疑难Crash问题集锦 iOS App运行中遇到Crash的情况相信大家都遇到过,开发和者测试中遇到了可能很方便的办法就是直接拿着设备连接一下,然后使用Xcode自带的工具就可以解析出Crash ...
- ThinkPHP中关于JS文件如何添加类似__PUBLIC__图片路径
在对html样式进行优化的时候,经常会用到Js/jquery进行一些跳转切换的样式,而我们常做的就是在Js/jquery代码中嵌url图片链接代码,以实现动态交互的页面效果. 如下图所示:
- ThinkPHP中initialize和construct的不同
ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢? 在网上搜索,很多答案是两者 ...
随机推荐
- LLVM 笔记(四)—— three-phase 设计的收益
ilocker:关注 Android 安全(新手) QQ: 2597294287 采用 three-phase 的设计方式,便于编译器支持多种语言和多种目标平台. 如果在优化器阶段采用通用的 IR ( ...
- CentOS使用yum源中自带的rpm包安装LAMP环境
CentOS使用yum源中自带的rpm包安装LAMP环境.这是Linux下安装LAMP的环境一种最基本最简便的方式.新手可以从容安装使用. 1. 安装基础包(可选安装)yum install -y w ...
- AC日记——I Hate It 洛谷 P1531
题目背景 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 题目描述 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的 ...
- 操作系统IO模型
操作系统IO模型 声明:如下内容是根据APUE和mycat两本著作中关于I/O模式的一些内容加上自己的一些理解整理而成,仅供学习使用. 本节内容 UNIX下可用的五种I/O模型 三种I/O模型 Rea ...
- Computer assisted surgery
Computer assisted surgery (CAS) represents a surgical concept and set of methods, that use computer ...
- php $CI =& get_instance();
初学php 看有人这样写,$CI =& get_instance(); 要你自定义的类库中访问CodeIgniter的原始资源,你必须使用 get_instance() 函数.这个函数返回一个 ...
- HubbleDotNet 的注册码生成器
从上次更新HubbletDotNet 到现在一晃3年多了.2012年我所在的公司被澳洲电信收购,从此我就变得特别忙,没有时间继续 HubbleDotNet 的开发和维护,非常非常的抱歉. Hubble ...
- __getattitem_ \__setattitem__\__delitem__
class Foo: def __getitem__(self, item): print('getitem',item) return self.__dict__[item] def __setit ...
- Asp.Net MVC<六>:Controller、Action 待续
控制器 抽象类Controller Visual Studio的向导创建的Controller类型继承自抽象类Controller. 它是ControllerBase的子类. 实现了IControll ...
- shell中测试命变量是否已经定义
(1)sehll实例 # cat subshell #!/bin/bash if (set -u; : $var); then #冒号与$间有空格 echo "Variable is set ...