整个网站的根目录用blog你要跟别人说起,自己好识别的文件夹名字.

下面的项目名称 就不再重复的写了, 直接用App就好了.

网站访问: ...../index.php(入口文件)/Admin(模块名称)/[[Index控制器名称]/index(方法名称)]

一般在后台中, 除了Index控制器显示首页(登陆进去后的页面管理和显示)外, 还有有一个LoginAction的控制器.

!! 一个控制器就是一个class.php文件, 里面有很多相关的方法

!! 导入外部的 模板: 只要在模块下,先创建Tpl目录, 然后将模板(包括css样式表, js脚本, index.html, login.html等等页面)全部放到 Tpl中就好了!

为了方便管理/清晰, 可以将除了 html页面的其他内容都放在Public文件夹中.

而html文件则要 按控制器的名称, 分别创建文件夹, 把对应控制器的模板html文件放在对应的文件夹中.

如: 控制器Login.class.php对应的html模板文件就放在 Login的文件夹下.

系统默认的PUBLIC 常量是指向: 网站根目录下的Public文件夹.

黄永成 习惯的是: 系统默认的PUBLIC用来存放 前台的Public模板文件夹内容(主要是指css,js)

后台的Public文件夹就放后台的模板的 css js等内容.

-------------------------- ==

在开发的时候, 要习惯于查看浏览器 给出的 页面的源代码, 因为, 通过浏览器 的源代码, 可以查看 / 排错!

可以查看: tp翻译/转换 后的 js, css的源地址和代码执行情况等等. 如: 通过查看源代码, 可以看到 从服务器端返回给浏览器的 "变量替换后的路径/内容"等等, 从而可以排错!

同时浏览器查看 源代码比很多 编辑器更好看.

有的页面布局, 完全用div.

其实有时候, 也不要完全抛弃 table! 在页面布局中, 要结合table和div!!! 有时要轻松得多!

因为在 td中, 你完全可以任意的使用 div! 一个td中可以包含 很多内容的 div1, div2....

-------------------------- ==

不能只是重视style css的应用, 也要重视/ 注意 html标签元素的 属性的应用, 有时 使用标签元素的 属性 比使用style来控制 更简单 更直接 有效!

注释:

不只是脚本文件中需要注释, 同样要习惯于: 在写html的时候, 也要适当的使用注释: 常用的格式是:

---------------------------==

定义全局或 模块下的__PUBLIC__, _ JS _等常量

在ThinkPHP中config文件中进行一下配置即可。

//重定义网站的一些URL地址
/* 模板相关配置 */
'TMPL_PARSE_STRING' => array(
'__PUBLIC__' => __ROOT__ . '/Public',
'__JS__' => __ROOT__ . '/Public/Js',
'__CSS__' => __ROOT__ . '/Public/Css',
'__IMAGE__' => __ROOT__ . '/Public/Image',
'__DATA__' => __ROOT__ . '/Data/'
), 在ThinkPHP3.2中其中__ROOT__ 默认找到项目的根路径,利用这种方式即可定义网站后台各级文件夹的路径,便于更好的查找相关文件 在ThinkPHP的模板中使用已定义的路径,可以使用C方法 C('TMPL_PARSE_STRING.PUBLIC') // 注意调用配置文件中的TMPL_PARSE_STRING的时候, 就不用下划线__PUBLIC__, 直接是PUBLIC了

在thinkphp的Conf中的convention.php中没有TMPL_PARSE_STRING, 要靠自己在模块的Conf中设置: 如: Modules/Admin/Conf/config.php 文件中设置... TMPL_PARSE_STRING是包含多个常量字符串设置的 数组!

设置中的 分组名, 最好用GROUP_NAME 表示. 这样在修改分组名称的时候, 就只是修改入口文件index.php, 而不用修改其他配置了, 如这里的 TMPL_PARSE_STRING.

在项目配置文件中, 设置分组时:

对APP的配置都是以APP_开头的;

只有DEFAULT_GROUP不是以APP开头的.

------------------------- ==

就像linux下, 只用vim编辑文档一样, windows下只用editplus编辑文档, 熟悉并记住这些键盘bind keys有意义的事!

记住, 从text editor跟侧边栏之间的转换: alt+F5, shift+F5是转到输出窗口. 然后再记住alt+F6是打开硬盘上的文件/文件夹列表

------------------------ ==

有两个xx+alt+up/down:

ctrl+alt+up/down: 复制当前行;

shift+alt+up/down : 上/下移动当前行

------------------------ ==

使用外部css表的方式: (外部链接的方式) 和img src的区别?

  1. 标签是link, 不是style
  2. 指定源地址是: href, 不是src
  3. 总之, 你理解为: css是外部" 链接", "链接" 那么就是: link, 如同超链接a一样, 地址是用 href属性来指明的.

    即: link type="text/css" rel="stylesheet" href="xxx" />

使用外部链接样式表的好处是:

  1. 减少html文件的大小, 搜索引擎搜录得更快
  2. 可以使用多线程来下载html和css文件, 这样显示渲染速度更快
  3. 便于html和css人员的分别修改处理: 内容和样式的分离

------------------------- ==

注意在定义类class的时候, 继承 的单词是 extends, 不是extended!

独立分组好后, 可以把App下的一些不要的文件夹如tpl等可以删除.

??好像: editplus(epp)的配置文件, 只认一个, 即使你安装了多个版本的epp, 那么最后你使用的配置 , 总是最后一次安装时的, 这是通常为空白的默认的安装配置

在epp中, 匹配有两种: 一是匹配括号(,[ {, 一是匹配 标签

匹配括号的bind key is: Ctrl+], select bracket is: ctrl+shift+]

匹配标签的,html标签,如 body> , 则是: ctrl+[, 选择标签内容是: ctrl+shift+[

epp的匹配,不像 zend, 是自动显示/高亮括号, 它是要匹配操作后才显示的.

可以配置一次性删除: 所有的空白行: ctrl+shift+B(bind key)...

--------------------------- ==

查看页面的源代码:

在页面的地址前面加上: view-source: + http://.....

**而且可以刷新!

view-source:http://localhost/blog/index.php/Admin/Login/index

--------------------------==

写TMPL_PARSE_STRIGN时:

  1. 位置 : 是写在App/Modules/分组名称如Admin/ Conf/ config.php中, 不是写在Admin下...
  2. 解析__PUBLIC__的时候, 最好用全局常量, 不要写死, 因为如果后面要修改的话, 就不好修改: 不要写MODULE_NAME, 它会把所有的东西都看成是模块, 不管

    是App, Modules, 还是Admin, 还是Action, 所以要写具体的: 应用程序的名称用APP_Name, 分组的名称用 Group_NAME...

.

---------------------- -------- ==

导入库:

查看thinkphp的官方文档

  1. import是一个方法, 格式是:import('类库文件名', '起始路径', '类库后缀');

    '类库文件名'中的点号表示的是路径"", 所以类库名本身不能带有点号

  2. 可以基于框架导入, 这时候, 就不用写第二个和第三个参数, 即不写起始路径, 和类库后缀, 因为框架会自动判断/认为类库的起始路径, 也会自动认为类库的后缀为

    class.php

  3. 基于框架的导入有三种:

    导入基类库(基础类库): 是指导入 Thinkphp/Lib 目录下的类库: import('Think.Util.Array'): Note that: 是导入lib目录下的, 不是lib/core下的; and: 是

    以Think开头的...

    导入扩展类库: 是指导入Thinkphp/Extend/Library目录下的类库: import('ORG.Util.Image'): 导入的是: THinkphp/Extend/Library/ ORG/Util/Image.class.php 类库文件

    导入项目应用程序库: import('MyApp.Action.UserAction')...

如果没有指定起始导入路径的话,类库包Think、ORG、Com之外的都会被认为是导入项目应用类库,例如:

    import("MyApp.Action.UserAction");
import("MyApp.Model.InfoModel"); 表示导入MyApp项目的UserAction和InfoModel类库文件,由于通常,我们都是导入当前项目下面的类库,所以可以简写成: import("@.Action.UserAction");
import("@.Model.InfoModel");
  1. 导入非标准类库文件

    这时, import的第二个参数和第三个参数就不能省略了:

    这里所说的非标准类库文件,主要是指位于特殊位置(不是上面三种位置)或者非.class.php后缀(如是.php后缀)的类库文件。

    像导入基类库、扩展类库和项目类库都是基于框架规范的目录下面,如果我们需要导入项目的Common目录下面的MyClass.php文件,则可以采用:

    import('Common.MyClass',APP_PATH,'.php');

    或者

    import('MyClass',APP_PATH.'Common','.php');

  2. 导入第三方库:

    可以用import方法, 但是用Vendor()方法更方便, 把自己写的第三方类库放在Thinkphp/Extend/Vendor下,就可以直接用 Vendor方法导入:

    Vendor('Zend.....');

  3. 支持别名导入:

    除了命名空间的导入方式外,import方法还可以支持别名导入,要使用别名导入,首先要定义别名,

    我们可以在项目配置目录下面增加alias.php 用以定义项目中需要用到的类库别名,例如:

    return array(

    'rbac' =>LIB_PATH.'Common/Rbac.class.php',

    'page' =>LIB_PATH.'Common/Page.class.php',

    );

--------------------------------- ==

生成验证码的时候, 提示, Image::buildImageVerify()方法无法call ImageCreate()方法?

要开启 php.ini中的 extension=php_gd2.dll

好像还不能用APP_PATh来代替配置文件中的__ROOT__.'/'.APP_NAME! 因为APP_PATh输出的是./App/, 结果替换后, 就成了当前目录下的... MODULE_NAME是指控制器的名字!

thinkphp中的方法函数import(), 就是由tp框架定义的 thinkphp/Common/目录中的 common.php文件中定义的!

我们甚至可以 在这个系统文件中 common.php中来echo 等等debug, 或显示某些变量!

黄永成-thinkphp讲解-个人博客讲解25集的更多相关文章

  1. 黄永成-thinkphp讲解-个人博客讲解26集

    如果是要导入 前后台分组都公用的 第三方类库, 就将类库(*.class.php文件) 放在 App下的Class文件夹中. 导入方法是: import('Class.Image', APP_PATH ...

  2. Alpha阶段 - 博客链接合集

    Alpha阶段 - 博客链接合集 项目Github地址 安卓端(Stardust):https://github.com/StardustProject/Stardust 服务器端(Gravel):h ...

  3. Beta阶段 - 博客链接合集

    Beta阶段 - 博客链接合集 项目Github地址 安卓端(Stardust):https://github.com/StardustProject/Stardust 服务器端(Gravel):ht ...

  4. 【Alpha - 五成胜算队】博客列表

    一. 团队Alpha冲刺博客 [Alpha 冲刺] 1/12 [Alpha 冲刺] 2/12 [Alpha 冲刺] 3/12 [Alpha 冲刺] 4/12 [Alpha 冲刺] 5/12 [Alph ...

  5. Alpha项目冲刺_博客链接合集

    组员 学号 林泽宇(队长) 211606317 李涵 211606365 尹海川 211606388 郏敏杰 211606307 何永康 211606362 陈炳旭 211606353 苏宇翔 211 ...

  6. Cron定时任务应用到Thinkphp – 贤生博客

    Cron定时任务应用到Thinkphp 安装crontab: yum install crontabs 关于cron的一些命令: /sbin/service crond start //启动服务 /s ...

  7. 马士兵老师hadoop讲解总结博客地址记录(啊啊啊啊啊,自己没有保存写好的博客...)

    http://www.cnblogs.com/yucongblog/p/6650822.html

  8. 『编程题全队』Alpha 阶段冲刺博客Day4

    1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.添加团队界面下的看板容器SlotWidget 2.实现SlotWidgets的动态布局管理 3.实现团队/个人界面之间的切换 ...

  9. 【集美大学1411_助教博客】团队作业8——第二次项目冲刺(Beta阶段)

    写在前面的话 此次团队作业8可以拆分成两部分:1.beta阶段冲刺计划安排,2.7天敏捷冲刺."我们很低调"没有使用leangoo,经过与张老师的商议,张老师同意他们不使用lean ...

随机推荐

  1. 【poj2699】 The Maximum Number of Strong Kings

    http://poj.org/problem?id=2699 (题目链接) 题意 给出1张有向完全图.U->V表示U可以打败V并得一分.如果一个人的得分最高,或者他打败所有比自己得分高的人,那么 ...

  2. bzoj3295: [Cqoi2011]动态逆序对(cdq分治)

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  3. MAC上快速调出终端的设置(保持和Windows的操作一致)

    在Windows上可以这样操作[Win+R]键->输入[cmd/cmder]打开终端. 在MAC下需要做些设置:打开[系统偏好设置]->打开[键盘]->打开[快捷键]->找到[ ...

  4. Swift&Node 使用Alamofire进行Post

    这篇博客主要实现Swift客户端和NodeJS后台的Post.Get请求实现. 我是一个略有点讨厌重复使用工具的人,比如这些基本功能完全可以用OC和PHP等替代,但是没办法,现在知识更新的太快啦,Sw ...

  5. 找女神要QQ号码

    引言 我们组来了个美女程序员,我心里窃喜,哈哈这下机会来了.我在想怎么下手呢?好吧,还是从QQ号码开始,找到女神要到QQ号,哈哈,我真是个天才~~~ 是这样子滴 想法是美好的,现实是残酷的,找女神要Q ...

  6. fzuoop期中练习

    5-1 科学计数法的值 科学计数法是一种数学专用术语.将一个数表示成 a×10的n次幂的形式,其中1≤|a|<10,n为整数,这种记数方法叫科学计数法.例如920000可以表示为9.2*10^5 ...

  7. Markdown的使用简介

    以前有摘抄过,然而onenote速度感人,现在又主要用Linux,所以在这里备份一下,好方便用 Linux下推荐remakeble软件,或者直接sublime text,再或者vim,反正我不会ema ...

  8. linux cat 的深入用法

    命令基于centos6系列,翻译基于官方原文的意思. catcat - concatenatefiles 1117.www.qixoo.qixoo.com and print on the stand ...

  9. 深入浅出Redis02 使用Redis数据库(String类型)

    一 String类型 首先使用启动服务器进程 : redis-server.exe 1. Set 设置Key对应的值为String 类型的value. 例子:向 Redis数据库中插入一条数据类型为S ...

  10. java编程思想-java中的并发(二)

    二.共享受限资源 有了并发就可以同时做多件事情了.但是,两个或多个线程彼此互相干涉的问题也就出现了.如果不防范这种冲突,就可能发生两个线程同时试图访问同一个银行账户,或向同一个打印机打印,改变同一个值 ...