thinkphp网站: http://thinkphp.cn, http://bbs.thinkphp.cn

在设置文件夹查看试图的时候, 只点" 应用到所有文件夹" 不要点"重置所有文件夹" , 那个是"重置"到默认视图!

登录检查页面->登录成功页面: verify.php->success.php: "登录成功, 正在为你跳转..."

过程化写网站和用框架ThinkPHP来写: 前者可能需要一个月, 后者可能需要一个星期

需要使用框架, 只专注于业务就好. 类/方法/逻辑都考虑好了, 封装好了的. 正如你要用电脑, 你不需要自己去写一个操作系统

你要开车, 也不需要自己去造一个车出来, 你要住房子, 也不需要自己去修房子...

mvc?

网站开发, 基本上都是基于/面向数据库的 web应用程序

M: model, 基本上就是 :数据库(的一个类)

V:view基于模板的视图

C: controller, 就是M和V之间的桥梁. V是将请求发送到C, Controller实际上就是中间层, 是我们写的控制逻辑 php代码.

项目的 单一 入口文件, 将程序的控制权交到 控制器手中, 以后就由 控制器来实现调度.(调度者,管理者).

注意: view视图是不能 不应该直接和数据库打交道的

thinkphp的版本和下载核心包还是完整包?

现在公司用得较多的是v3.1.3

要下载完整包, 完整包额外包含了常用的一些类: 上传类/下载类/验证码类/分页类/图形处理类等等. 核心包只有

ThinkPHP运行必须的一些文件

注意,  下载下来解压后的 目录名称很长如什么thinkphp_v3.13_utf8_full等等之类的 , 为了便于在项目中 在编程中引用,

通常把目录名更改成: ThinkPHP简短的就好.

thinkphp从哪个版本开始, 入口文件部署变化了?

从v3.2开始, 入口文件部署变了: 整合了你要开发的项目目录, 自带了入口文件index.php, 然后, 你只要将

你的项目放在: 和ThinkPHP同级的 Application目录中就可以了

而v3.1.3及其之前的版本, 都是由用户自己来创建index.php, 而且这个index.php文件是放在 整个项目的跟目录下, 并且

跟ThinkPHP文件夹同级的地方.

 如何写thinkphp项目的入口文件index.php?

<?php

define('APP_NAME', 'Index');

// 注意这个应用程序 /项目 名称, 不是总的项目名称, 而是说, 你创建的这个项目是(前台项目, 还是

// 后台项目,或者说是你自己定义的项目如 登录/注册项目. 一般前台项目用Index*大写*来表示

// thinkPHP对文件名/ 文件夹名称的 大小写比较 是 严格区分的, 比较明显, 所以这里凡是 目录都首字母大写,

// 尽量 要 跟系统内的约定 一致!!

define('APP_PATH', './Index/);

// 项目路径是上面那个的路径, 在thinkphp中, 目录都要首字母大写.  而且表示目录要在结尾加/

// 表示目录, 都要在目录名后面加 斜杠, 如果不加, 将会生成以Index为前缀的多个目录, 而不是把项目文件夹放在 Index/目录下.

define('APP_DEBUG', TURE);

// 这个define('APP_DEBUG', TURE); 要放在require ThinkPHP.php之前, 如果放在require语句之后, thinkphp核心都都执行完了, 还有什么用? 要事先告诉thinkphp内核.

include  './ThinkPHP/ThinkPHP.php'; // 最好用include或者require ,不要用xxx_once, 用xxx_once效率低??

// include或require后,  实际上"包含" 就是 "执行" , 通过执行这个thinkphp的核心模块/文件, 就生成了你的应用程序 /项目文件夹 了!

/* APP:run(); */  这个不用再写了, 可能内核在最后就已经调用了这个run()函数了, 如果再写这个, 就会生成两个thinkphp的笑脸.

?>

thinkphp经过改进, 消除Runtime目录放在其他位置的bug. 不用再写: define('RUNTIME_PATH', './Index/Runtime/');

平级和上级目录的表示?

对于 当前正在编辑的文件 , 和它 平级(跟它在同一个目录, 排列/ 显示 在一起的)的文件/文件夹, 引用位置都是" 当前目录./"

对于 当前正在编辑的文件 , 和它 上一级的目录( 从当前文件开始, 向上一次 可以显示)的文件/ 文件夹, 引用位置:"../"

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 35 bytes) in C:\wamp\www\think\ThinkPHP\Common\common.php on line 657

是说在 "一个" php脚本:common.php中,  内存的极限为8M被用完: 改为: memory_limit = 256M

thinkphp的控制器放在什么地方?

Controller就是Action :  放在  Index/Lib/Action/ IndexAction.class.php中.

控制器实际上, 是一个类, 继承自 Action的一个 XxxAction的一个类, 其控制功能就是通过里面的函数方法来实现(调控/路由的).

注意, 生成的Index "项目"基本上跟ThinkPHP的目录相同 , 只是thinkphp中的Extend目录被Runtime目录所替代,

其他如:Common,Config,Lang, Lib,  Tpl都有.

但是, 项目Index下的目录一般都是空的!

形成自己的规则和套路?
套路很重要, 免得你迷惑, 是你轻松愉快 + 高效率

如: thinkphp的驼峰命名法,  文件夹/文件单数命名法, 大括号的书写风格...

php的类和c++的类 new的不同?

c++的类实例, 只有类中 存在 带参构造函数的时候, 才用new Foo(10, 'abc'); 否则就不能带括号: new Foo

而php的类实例化, 不管是否有带参构造函数, 都必须带括号: $obj = new $control();

而且php的类名  和 函数名  , 支持 变量 替换...

$_GET等全局变量, 不但使用其成员: $_GET['name'],  而且使用/打印 其本身 也是较多的: print_r($_GET);

thinkphp单入口的运行方式?

单入口文件index.php 相当于:

<?php

$control = isset($_GET['m']) ? $_GET['m'] : 'Index';

$action = isset($_GET['a']) ? $_GET['a'] : 'index';

$obj = new $control();

obj -> $action();

class IndexAction() {   // Action是后缀, 主要是为了和 Model表示数据库的后缀相区别!

public index(){

echo "Index index";

}

public show(){

echo "Index show";

}

}

实际上, 是调用单入口文件index.php的 get方法 传参 m="(实例化)控制器 类"  & a="方法".  控制器首字母大写, 而方法总是 全小写

.....

一个控制器中的方法, 就对应/代表 着一个 view的页面

而一个控制器, 就相当于 项目中的一个 "逻辑/ 功能 模块"!如 首页模块, 登录模块, 分页模块, 会员中心, 搜索页等等.

?>

defined不用if?

因为defined是函数调用, 有bool类型的返回值, 所以在判断某个常量是否 被定义时, 直接使用 defined, 而不必用 if(defined(...)).

最常用的:  defined('APP_NAME') or define('APP_NAME', 'Index');

thinkphp v3.1.3需要的php最低版本?

defined('THINK_PATH') or exit();

if(version_compare(PHP_VERSION,'5.2.0','<'))  die('require PHP > 5.2.0 !');
//  版本信息
define('THINK_VERSION', '3.1.3');
php除了自定义常量外, 还可以使用 系统 预先定义 的系统常量(可以直接使用...):

: __FILE__, __LINE__, PHP_VERSION, PHP_OS, TRUE ,FALSE

E_ERROR, E_WARNING, E_PARSE.

常量的使用, 可以直接用常量名,   也可以constant( $constant_var), 后者更灵活, 可以带表示常量的变量...

需要自己创建轮子吗?

摒弃 "英雄主义", 这个世界不是哪一个人的能力把人类发展到现在的程度的, 谁都不是上帝, 而是所有人的智慧的结晶

所以, 不必想自己去创造一切, 什么东西都要自己从原始 社会建设做起, 所以, 完全不必 自责计算机里的东西不是自己创造的,

"就算windows也不是比尔一个人创造的, linux也不是linus一个人创造的", 所以, 不要感到羞愧! 不要想做"英雄"主义.

不要为自己 使用 "工具" 而感到自责羞愧. 这些都是"人类社会"的智慧结晶.

不要去管" 工具 是否简陋", 界面是否"美观", 只要较好的/高质量的 "完成功能" 就好. 电脑仅仅只是 工具!

一切都是为了高效率和方便

HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。

要想检测一个字符串是不是数字,可以使用 is_numeric() 函数

php的TRUE 和FALSE?

true和false 是php的关键字 , 而TRUE和FALSE是php的预定义的常量. 随便写哪个都可以.

thinkphp默认没有开启APP_DEBUG?

因为在开发阶段, 代码经常要随时修改, 为了能够及时看到修改后的结果, 所以要开启define('APP_DEBUG', TRUE);

而上线后, 网站已经开发好了,  不会再修改了, 所以为了网站的响应更快, 不必每次都去解释执行, 所以就做了Runtime/~runtime.php

的编译, 响应请求时, apache引擎直接读取这个~runtime.php这个缓存文件.

当然, 不是每个php文件都会编译缓存 , 如控制器下面的 action方法好像就没有缓存, 而Config/config.php文件就预编译缓存了的.

TinkPHP.php中的以默认的是没有开启调试的 : defined('APP_DEBUG')     or define('APP_DEBUG',false);

model和module的区别?

model :[ˈmɑdəl]

adj. 模范的;典型的 the model teacher, the model example
n. 模型;模式;典型;模范;模特儿;式样
v. 模拟;模仿;做模特儿;做模型;塑造

module: 美[ˈmɑdʒˌul]

n. 单元,组件;舱;模块

所以, 一般在php, thinkphp中用的都是 model. 表示模型的意思:表对应一个类, 表的记录对应一个类实例.

ThinkPHP的Conf和项目的Conf配置文件的区别?

ThinkPHP中的Conf是对全局的配置, 包括: alias.php, convention.php(注意是惯例,不是"方便的"), debug.php, tags.php

而项目的Conf/配置文件则是: config.php.

一般, 配置文件的写法就是: return array(.....);

一般, 是修改"项目的"配置文件, ThinkPHP自带的配置文件一般不修改??

thinkphp的项目默认访问路径?

默认的是:localhost/think/index.php?m=Index&a=index, 所以, 可以只写localhost/think/

这里的m 是指的 "是前台模块" 还是 "后台 Admin 模块".

echo输出字面值时的处理

echo var_name;

会首先搜索var_name是不是一个常量, 如果没有搜索到, 才会直接输出字符串"var_name", 所以, 要养成如果是字符串就要

带上引号的 习惯.

---------------------------------------------------------------------

查看thinkphp的版本?

{$Think.version}: 在html中,使用TagLibs, 不是使用<>, 而是使用{}. 这样做, 是为了 和 html标签 相区别!  同时, 也让标签库引擎就能知道识别了!

thinkphp-1的更多相关文章

  1. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  2. 在 SAE 上部署 ThinkPHP 5.0 RC4

    缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游 ...

  3. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  4. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  5. thinkphp数据的查询和截取

    public function NewsList(){ $this->assign('title','news'); $p = I('page',1); $listRows = 6; $News ...

  6. [转]thinkphp 模板显示display和assign的用法

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

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

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

  8. Kindeditor在ThinkPHP框架下的使用

    1.简单调用Kindeditor的图片上传功能: a.Html部署图片预览,记录图片上传成功之后的路径,以及上传图片点击按钮 <tr> <td>活动图片:</td> ...

  9. 在thinkphp中,写的博文标签多对多关系的标签频率统计算法

    常常看到别人的博客里面,或者网站里面有这样随机颜色,但字体大小与标签出现频率有关的标签云,于是自己就想写一个.至于颜色的随机显示,那就很简单了,这里就不列代码. 因为正在学thinkphp,所以数据查 ...

  10. thinkphp怎么修改配置进入默认首页

    thinkphp文件夹下config 里面有个convention.php文件 里面有三个配置 'DEFAULT_MODULE' => 'Home', // 默认模块 'DEFAULT_CONT ...

随机推荐

  1. Python类库下载

    https://sourceforge.net/projects/pywin32/files/pywin32/ WMI库的安装 下载 http://timgolden.me.uk/python/wmi ...

  2. 第一个WP8程序,照相机

    安装win8 64位,vs2013(包含wp8 sdk),百度各种得到学生开发者账户之后,终于可以试一下将自己的app部署到手机上的感觉了. 首先来个简单练练手的照相机功能 照相 即从主界面进入到照相 ...

  3. [网站公告]23:00-05:00阿里云SLB升级会造成4-8次每次10秒的闪断

    大家好,阿里云将于今天夜里(7月29日23:00-7月30日05:00)对负载均衡服务(SLB)进行升级操作,升级期间我们使用的SLB实例会有4-8次的闪断,每次闪断时间10秒左右.闪断期间会造成网站 ...

  4. php中的错误级别

    在php编程过程中,大家一定会遇到或多或少的错误提醒,也正是这些错误提示,指引我们编写更加干净的代码,今天先写出我们主要列出的错误类型,先挖坑,写关于php错误与异常的相关知识,慢慢填坑.    De ...

  5. 谈EntityFramework数据更新之技巧

    EntityFramework是一个很不错的ORM框架,一直都在使用.今天想跟大家分享以下EntityFramework数据更新方面的几个技巧: 1:如何new一个新实体去更新记录,而不是从数据库中查 ...

  6. grootJs 属性过滤器

    index10.html <html><head> <title>属性过滤器</title> <script src="jquery-1 ...

  7. 用jQuery.ajaxWebService请求WebMethod,Ajax处理实现局部刷新

    首先在aspx.cs文件里建一个公开的静态方法,然后加上WebMethod属性. 如: [WebMethod]  public static string GetUserName()   {  //. ...

  8. DOM系列---DOM操作表格

    DOM在操作生成HTML上,还是比较简明的.不过,由于浏览器总是存在兼容和陷阱,导致最终的操作就不是那么简单方便了.本篇章主要了解一下DOM操作表格. 一.操作表格 <table>标签是H ...

  9. 分布式Web服务器架构

    最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网 ...

  10. neutron中的dhcp功能

    1. 分布式dhcp 特点: 1)一个dhcp port对应多个host上的tap设备. 2)基于port event的network与agent的绑定与解绑定,即创建tap设备.namespace. ...