不但要记住核心的东西, 还要记住 相关的 东西: 如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. android 开启本地相册选择图片并返回显示

    .java package com.jerry.crop; import java.io.File; import android.app.Activity; import android.conte ...

  2. Centos7中所有的关机命令的奇怪现象

    今天在研究shutdown,reboot,halt,poweroff几种关机命令的区别是发现他们都是/bin/systemctl的软连接 ls -l /sbin/{shutdown,reboot,ha ...

  3. 全透明Activity

    第一步:在/res/values/styles里面添加如下代码: <style name="translucent"> <item name="andr ...

  4. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  5. Oracle约束(Constraint)详解

    概述 约束是数据库用来确保数据满足业务规则的手段,不过在真正的企业开发中,除了主键约束这类具有强需求的约束,像外键约束,检查约束更多时候仅仅出现在数据库设计阶段,真实环境却很少应用,更多是放到程序逻辑 ...

  6. Oracle 数据库基础——安装

    一.数据库基础知识 1.概念 数据库全称数据库管理系统,简称DBMS,是一种在计算机中,针对数据进行管理.存储.共享的一种技术. 2.分类 数据库的发展过程中,按逻辑模型可分为以下几种: 3.关系型数 ...

  7. POJ1236Network of Schools[强连通分量|缩点]

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16571   Accepted: 65 ...

  8. [tem]线段树练习

    1080 线段树练习 单点修改,区间查询和 #include <iostream> #include <cstdio> #include <algorithm> # ...

  9. Struts2 OGNL案例

    一>>原始类型与包装类型 先定义两个实体类User和Address User package cn.entity; public class User { private String n ...

  10. 自定义UICollectionLayout布局 —— UIKit之学习UICollectionView记录一《瀑布流》

    一.思路 思路一:比较每一行所有列的cell的高度,从上到下(也就是从第一行开始),从最短的开始计算,(记录下b的高度和索引,从开始计算,依次类推) 思路二:设置上.下.左.右间距和行间距.列间距及列 ...