TP入门第五天

1、数据库连接

这里说下为和用到配置都是返回数组,$arr=include(‘config.php’);然后你打印出来看看!

配置文件(有两种连接方法)

第一种:

‘DB_TYPE’=>’mysql’,//数据库类型

‘DB_HOST’=>’localhost’,//数据库主机地址

‘DB_NAME’=>’thinkphp’,//数据库名称

‘DB_USER’=>’root’,//数据库用户名

‘DB_PWD’=>’joyous’,//数据库用户密码

‘DB_PORT’=>’3306’,//数据库端口

‘DB_PREFIX’=>’think_’,//数据表前缀

一般情况下,上面的几项够用了,这里补充下其他配置项目(如果手头没有配置手册,怎么才能看到其他配置项目呢?在2.0版本中默认配置文件ThinkPHP\Common目录下,在3.0版本中是在ThinkPHP\Conf目录下convention.php文件就是项目默认配置文件,而且配置中都有详细的注释)

‘DB_FIELDS_CACHE’       => true,        // 启用字段缓存

‘DB_CHARSET’            => ‘utf8’,      // 数据库编码默认采用utf8

比如数据库的主从以及读写分离现在大家不要考虑太多,后续我会介绍到相关配置和使用

第二种

使用DB_DSN方式定义可以简化配置参数,DSN参数格式为:

数据库类型://用户名:密码@数据库地址:数据库端口/数据库名

如果两种配置参数同时存在的话,DB_DSN配置参数优先。

‘DB_DSN’=>’mysql://username:password@localhost:3306/DBname’,

第三种

在模型里面连接

如果在某个模型类里面定义了connection属性的话,则实例化该自定义模型的时候会采用定义的数据库连接信息,而不是配置文件中设置的默认连接信息,这样可以用于跨库操作

protected $connection=array(

‘DB_TYPE’=>’mysql’,//数据库类型

‘DB_HOST’=>’localhost’,//数据库主机地址

‘DB_NAME’=>’thinkphp’,//数据库名称

‘DB_USER’=>’root’,//数据库用户名

‘DB_PWD’=>’joyous’,//数据库用户密码

‘DB_PORT’=>’3306’,//数据库端口

‘DB_PREFIX’=>’think_’,//数据表前缀

);

//当然你可以使用dsn方式连接公共连接

附:官方手册中TP3.0中第6章第78节有详细说明,大家可以阅读一下

PHP数组知识汇总

1.建立数组array()

2.array array_chunk ( array input, int size [, bool preserve_keys] )array_chunk() 将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少几个。得到的数组是一个多维数组中的单元,其索引从零开始。

3.array array_combine ( array keys, array values )返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。

4.如果两个数组的单元数不同或者数组为空时返回 FALSE。

5.array array_count_values ( array input )array_count_values() 返回一个数组,该数组用 input 数组中的值作为键名,该值在 input 数组中出现的次数作为值。

6.array array_flip ( array trans )array_flip() 返回一个反转后的 array,例如 trans 中的键名变成了值,而 trans 中的值成了键名。

7.bool array_key_exists ( mixed key, array search )array_key_exists() 在给定的 key 存在于数组中时返回 TRUE。key 可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。

8.array_keys() 返回 input 数组中的数字或者字符串的键名。

9.array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

10.如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

11.array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。

12.array_product() 以整数或浮点数返回一个数组中所有值的乘积。

13.array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加

14.array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用。它接受 input 作为输入数组和一个可选的参数 num_req,指明了你想取出多少个单元 - 如果没有指定,默认为 1。

15.array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。如果 array 为空(或者不是数组),则返回 NULL。

16.array_sum() 将数组中的所有值的和以整数或浮点数的结果返回。

17.array_unique() 接受 array 作为输入并返回没有重复值的新数组

18.array_values() 返回 input 数组中所有的值并给其建立数字索引。

更多数组处理请参考:php手册或者http://php.net/docs.php

TP入门第四天

1、URL大小写

默认配置:’URL_CASE_INSENSITIVE’  => false,   // URL地址是否不区分大小写

这样默认情况下是区分大小写的,如果不想让系统区分大小写,请你在配置中设置’URL_CASE_INSENSITIVE’  => true,   // URL地址是否不区分大小写

真正你的程序命名规范按照tp要求来做就没有大小写问题了

附:Windows 主机不区分 URL 大小写,但是,Unix/Linux 主机区分大小写。

2、调试模式

配置文件中添加:

注意:2.1版本配置APP_DEBUG=>true;而3.0版本是配置

‘APP_STATUS’=> ‘debug’

halt()方法:比如需要在那里中断操作,可以halt(‘joyous’)相当于echo “joyous”;exit();

模型调试:显示数据库操作中执行的SQL语句(后面将会讲到getLastSql()就可以完成)

3、Trace信息

Continue reading

TP入门第三天

1、系统常量

TP2.1版本:(蓝色是3.0中去掉

__ROOT__  : 网站根目录地址 

__APP__  : 当前项目(入口文件)地址 

__GROUP__:当前分组地址

__URL__  : 当前模块地址 

__ACTION__ : 当前操作地址 

__SELF__  : 当前 URL 地址 

__CURRENT__  : 当前模块的模板目录

ACTION_NAME : 当前操作名称 

APP_PATH : 当前项目目录 

APP_NAME : 当前项目名称

APP_TMPL_PATH : 项目模板目录

APP_PUBLIC_PATH :项目公共文件目录 

CACHE_PATH : 项目模版缓存目录 

CONFIG_PATH :项目配置文件目录 

COMMON_PATH : 项目公共文件目录

DATA_PATH : 项目数据文件目录 

GROUP_NAME :当前分组名称 

HTML_PATH : 项目静态文件目录

IS_APACHE : 是否属于 Apache (2.1版开始已取消)

IS_CGI :是否属于 CGI模式 

IS_IIS :是否属于 IIS  (2.1版开始已取消)

IS_WIN :是否属于Windows 环境 

LANG_SET : 浏览器语言 

LIB_PATH : 项目类库目录 

LOG_PATH : 项目日志文件目录 

LANG_PATH : 项目语言文件目录

MODULE_NAME :当前模块名称 

MEMORY_LIMIT_ON : 是否有内存使用限制 

MAGIC_QUOTES_GPC : MAGIC_QUOTES_GPC魔术标签是否开启 

TEMP_PATH  :项目临时文件目录 

TMPL_PATH : 项目模版目录 

THINK_PATH : ThinkPHP 系统目录 

THINK_VERSION ThinkPHP版本号 

TEMPLATE_NAME :当前模版名称 

TEMPLATE_PATH :当前模版路径 

VENDOR_PATH : 第三方类库目录 

WEB_PUBLIC_PATH :网站公共目录

APP_CACHE_NAME : 系统缓存文件名

Continue reading

TP入门第二天

1、配置说明

//’配置项’=>’配置值,配置在conf文件夹下config.php

2、Action文件定义规定

类名和文件名一样,首字母大写,后面必须要加Action必须继承Action

比如shop模块需要这样命名文件:ShopAction.class.php,而类名必须是ShopAction并且需要继承Action

3、PATH_INFO模式

比如文件是php.php页面,里面就写一段代码

print_r($_SERVER);然后访问php.php以及访问php.php/index/model搜下path_info看到什么了?

Patinfo又可以分三种:普通模式和自动识别模式以及兼容模式

普通模式:设置配置文件加上‘URL_PATHINFO_MODEL’=>’1’

普通模式访问:index.php/m/模块名/a/动作名

这样GET传值怎么办?

这个时候可以这样传值:index.php/m/模块名/属性/1/属性2/2

这样在模块中的方法可以用$_GET[‘属性‘]得到值1$_GET[‘属性2′]得到值2

智能模式:需要配置‘URL_PATHINFO_MODEL’=>’2’

这个时候就不需要加上index.php/模块名/动作名

而传值就和普通方式一样的办法进行传值

说明:有的可能配置了默认分隔符,那么这里的传值就需要变化了

比如你配置了’URL_PATHINFO_DEPR’=>’-‘,那么你传值就要用分开传值了

注意:URL_PATHINFO_MODEL这个配置在3.0里面已经去掉了

Continue reading

TP入门第一天

1、学习要会提问

论坛提问,搜索解决

2、Tp优点

放便跨平台,URL支持多模式(放便SEO),自动加载(动态编译、节约系统效率),功能强大(AJAX,视图,分组,权限管理,关联操作,缓存,自动验证,自动完成,映射),不断扩展

3、难点

Mvc开发模式,学习过程顺序,

4、MVC

Model   模型    数据库操作类,通过数据库操作类操作表(使用的时候必须要实例化)

View    视图     模板

Control  控制器   控制器也叫模块主要来实现模板、模型之间的控制关系(有很多方法或者叫动作)

5、应用路径

APP_PATH是应用路径(项目路径),分前台和后台应用

注意区分APP_PATHAPP_NAME

APP_NAME应用名称,

APP_NAME用途让tp加载的时候很好的区分,权限控制RBAC的时候能很好控制

6、解决问题

那么可以使用define(‘STRIP_RUNTIME_SPACE’,false);使用自动排版

关闭生成runtime.php文件使用define(‘NO_CACHE_RUNTIME’,true);//不缓存加载文件