不但要记住核心的东西, 还要记住 相关的 东西: 如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中的常量:

  1. 为什么要使用常量?

    其实这些所谓的常量也不是真的不变, 只是一些“伪常量”, 代表一些内容/配置/路径, 你完全可以写死, 只是为了代码的灵活性和 移植性的目的

  2. 为什么要这么多常量?

    因为在不同的 模块、 组件、 功能中, 需要不同的处理, 所以需要用不同的常量来表示/代表/处理。

  3. 应该按分类来记忆这些变量

    包括类别:
  • 预定义常量, 不会随环境的变化而变化, 一旦下载的框架定了, 就是不变的, 相当于真的 常量
  • 路径常量, 包括系统(框架的路径常量)和项目(网站程序)的目录路径常量, 用于系统默认的目录规范,如果不希望定制目录, 这些路径常量一般不需要更改。
  • 系统常量,是指随着开发环境的改变、设置的改变而改变的。如: 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中疑难笔记的更多相关文章

  1. 关于thinkphp框架中模型笔记

    模型这一块,感觉学习的不是很清楚,单独水一贴thinkphp中模型的学习笔记. 0x01 模型类简介 数据库中每一张表对应一个模型,类名就是表名,类里面的成员变量就是列名, 把一张表对应为一个类,其中 ...

  2. thinkphp一句话疑难解决笔记 2

    php中的_ _call()方法? 它是php5后为对象 类 新增的一个自动方法. 它会监视类的其他方法的调用, 当调用类的不存在的方法时, 会自动调用类的__call方法. tp的 "命名 ...

  3. thinkphp一句话疑难解决笔记

    URL_PATHINFO_DEPR, depr表示 网页路径"分隔符",用"-", 有利于seo,注意是从 sername/index.php(开始的)/hom ...

  4. 关于ThinkPhp中getField方法存在的问题

    在ThinkPhp中我们可以通过以下方式获取数据库数据 query:直接执行SQL查询操作 find:查询单选数据集 getField查询字段值 select:查询数据集 其他......   但今天 ...

  5. [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...

  6. thinkphp中的setInc、setDec方法

    thinkphp中setInc.setDec方法 可用于统计字段(通常是数字类型的字段)的更新,例如积分,等级,登陆次数等 必须配合连贯操作where一起使用 $User = M("User ...

  7. iOS:项目中疑难Crash问题集锦

    项目中疑难Crash问题集锦 iOS App运行中遇到Crash的情况相信大家都遇到过,开发和者测试中遇到了可能很方便的办法就是直接拿着设备连接一下,然后使用Xcode自带的工具就可以解析出Crash ...

  8. ThinkPHP中关于JS文件如何添加类似__PUBLIC__图片路径

    在对html样式进行优化的时候,经常会用到Js/jquery进行一些跳转切换的样式,而我们常做的就是在Js/jquery代码中嵌url图片链接代码,以实现动态交互的页面效果. 如下图所示:

  9. ThinkPHP中initialize和construct的不同

    ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢? 在网上搜索,很多答案是两者 ...

随机推荐

  1. [iOS]技巧集锦:UICollectionView内容下沉64像素原因和解决方案

    现象 UICollectionView的内容在按Home键再回到APP时,会下沉64像素. 原因 页面有NavigationBar,正好是64像素,Controller勾选了Adjust Scroll ...

  2. eclipse下maven项目保持原有目录结构配置resin运行环境

    maven项目用起来很方便,但是它的目录结构和eclipse的目录结构是有区别的,故而在eclipse下的maven项目,直接运行调试是有一些问题的. 为了方便maven项目的运行调试,因而也就有了像 ...

  3. [django]Django的css、image和js静态文件生产环境配置

    前言:在Django中HTML文件如果采用外联的方式引入css,js文件或者image图片,一般采用<link rel="stylesheet" href="../ ...

  4. leetcode -- Convert Sorted List to Binary Search Tree

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  5. Spring整合Redis

    1.相关jar包 除了Spring必须的jar外,还需要spring-data-redis,jedis,commons-pool,这里使用的是maven,也可以拿着url把jar包下下来 <!- ...

  6. one to many

    @OneToMany(mappedBy="order",fetch=FetchType.EAGER,cascade={CascadeType.ALL})    private Li ...

  7. 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...

  8. 如何使用Log4net创建日志及简单扩展

    第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0.第二步:程序启动时读取log4net的配置文件.如果是CS程序,在根目录的Program.cs中的Main方法中添加 ...

  9. 十分钟轻松让你认识ASP.NET MVC6

    这篇文章说明下如何在普通编辑器下面开发mvc6应用程序. 上篇文章: 十分钟轻松让你认识ASP.NET 5(MVC6) 首先安装mvc6的nuget包: 可以看到在project.json文件中添加了 ...

  10. EXT总结例子

     //页面按钮点击展开隐藏 {  空格                    xtype:'fieldset',                    title:'<b>高级搜索< ...