PHP学习笔记
* 学习网址:PHP中文手册
http://www.phpchina.com/manual/php/
PDO Functions
http://www.phpchina.com/manual/php/ref.pdo.html
* 从 HTML 中分离; 当 PHP 解析一个文件时,会寻找开始和结束标记,标记告诉 PHP 开始和停止解释其中的代码。
1. php.ini文件
修改php.in文件将何时生效,这取决于安装php的方式,如果作为CGI二进制包安装PHP,那么每次调用php时都会重新读取php.ini文件。如果作为Apache模块安装php,则只会在apache守护进程第一次启动时读取php.ini。
php对变量大小写敏感 对函数大小写不敏感
2. 类型转换
* 类型自动转换
因为php是弱类型语言,所以有时会根据引用变量的环境,将变量自动转换为最适合的类型。(《PHP与Mysql5程序设计》P40 line1.)
* 类型强制转换
可以使用以下类型转换操作符,来对php中的变量进行类型强制转换:
(array)
(bool) 或 (boolean)
(int) 或 (integer)
(object)
(real) 或 (double) 或 (float)
(string)
3. php默认的界定符是 <?php ?> (《PHP与Mysql5程序设计》P31 ).
因为php是弱类型语言,所以声明变量时不能指定其变量类型。
php中的变量声明,变量总是以美元符$开头,然后是变量名。区分大小写。
常量定义使用define方法,例如: define("PI",3.141592)
foreach 有两种语法形式:
1)
foreach(array_expr as $value){
statement;
}
2)
foreach(array_expr as $key => $value){
statement;
}
4. php的核心是用c开发的,所以在php中(特别是php4之前),可以看到很多过程式编程的方式。标准的PHP发行包中有1000多个标准函数。
echo print include 是特殊的命令函数,调用时可以不加()括号符。
include() include_once() require() require_once()的区别
require()方法总是会执行,即使放在if(0)语句块中;require()语句如果出错,则脚本停止执行。该语句可以理解为预编译时的函数。
5. PHP有9个预定义的超级全局变量,这些变量都是变量数组。
* $_SERVER
* $_GET
* $_POST
* $_COOKIE
* $_FILES 二维数组
* $_ENV
* $_REQUEST
* $_SESSION
* $_GLOBALS
6. 字符串
在双引号的字符串中,变量和转义序列都得到相应解析。
而在单引号中,则不会解析变量和转义序列(除了\' 和 \\)。
字符串的拼接操作符(.) 拼接赋值操作符(.=)
7. 数组
php不需要在创建数组时指定其大小,也不需要在使用数组前先行声明。不过你可以调用array()函数来创建数组。
php中的数组不仅有普通数组的基本功能,还有类似Map的功能。实际上,php 没有真正的类似java的collection的集合类。但数组的功能已经具备了Array,List,Map的作用了。
P78 array()函数,list()函数, range()函数,count()函数,sizeof()函数
P78 =>操作符
8. P100 定义函数
P68 按引用传递参数;
P73 变量函数
P111构造函数( __construct() )、析构函数( __destruct() )
P125 反射。
P189 执行系统函数
P259 PEAR,PHP扩展与应用库。
P232 PHP的回查特性(要配合Apache的回查特性); $_SERVER['PATH_INFO'] 来取得路径信息
9. 通过配置制Apache的httpd.conf来配置错误处理。 例如配置404错误指向某个error.html页面。
10. P240 header()函数
P242 explode()函数可以分割字符串,类似split(),但后者使用正则表达式。
P272 mail()函数
11. Smarty是最流行的PHP模板引擎,Smarty的注释 {* *} P332
12. 数据库连接的方式:1) DB是PHP编写的一个数据库抽象层,包含在PEAR包中;2) PDO php数据对象,统一各式个样的数据库命令,在开发过程当中,是使用PDO类对象。 不过PDO这个功能特性是PHP5.1 以上版本才提供的(详见P415)
13. PHP的mysql扩展
PHP与Mysql交互时,如果是MySQL4.1版本及以下,可以使用PHP的mysql扩展
windows下的配置是: extension=php_mysql.dll
php的mysql扩展提供了多达45个函数。
14. PHP的mysqli扩展
如果想使用MySQL4.1以上版本的新特性,则需要采用PHP的mysqli扩展
php的mysqli扩展支持MySQL的新版本特性。采用类封装(使用mysqli类对象),同时为兼容性考虑,也提供了面向过程的方法。
15. 首先我使用的php5是采用msi的安装方式,如果是zip方式应该也一样。安装pear的方式如下:
1) 运行php5目录下的go-pear.bat 命令
2) 运行PEAR_ENV.reg
3) 到http://pear.php.net/packages.php 网站上download相关的包,然后解压到php5目录下,例如我所要安装的pear包为:
DB-1.7.12.tgz
Date-1.4.7.tgz
File-1.3.0.tgz
Numbers_Roman-1.0.1.tgz
4) 运行命令,如Pear install DB-1.7.12.tgz (注意,pear已是php5目录下的pear.bat 批处理文件)
16. 输出信息并中断 PHP 程序。语法: void die(string message);
@符号将禁止失败尝试导致的任何错误信息。所有函数都有此特征。最常见的示例如下:
@mysql_connect("localhost","root","root")
or die("could not connect to MySQL Server!");
17. 进行mysql数据库操作时,常用的函数如下:
mysql_connect()
mysql_pconnect()
mysql_close()
mysql_select_db()
mysql_query()
mysql_result()
mysql_fetch_row()
mysql_fetch_array()
mysql_num_rows()
mysql_affected_rows()
mysql_error()
18. 利用mysqli扩展 进行数据库操作时,跟jdbc操作类似,采用面向对象的方式来编程。
mysqli扩展只能用于 php5。同时mysqli也提供了 过程化的语法。
19. 许多数据库,例如mysql都直接提供了散列函数( eg. md5() )。
MD5是“单向”散列算法,也就是不可逆算法。
20. 加密函数
%md5 -- Calculate the md5 hash of a string,MD5是“单向”散列算法,也就是不可逆算法。
%crypt -- One-way string encryption (hashing)
Jsp的脚本撰写格式为:
declaration:<%! %>
expression <%= %>
scriptlet: <% %>
Asp的脚本撰写格式为:
expression <%= %>
scriptlet: <% %>
php的脚本撰写格式为:
declaration:<?php ?>
expression <?php echo ?> or <?= ?>
scriptlet: <?php ?>
=======================JSP=======================
jsp declaration
<%! %>
jsp expression
<%= %>
jsp include directive
<%@ include file="" %>
jsp page directive
<%@ page contentType="text/html; charset=GB18030" %>
jsp scriptlet
<% %>
jsp taglib directive
<%@ taglib uri="" prefix="" %>
=======================PHP=======================
php declaration
<?php ?>
php expression
<?php echo ?>
php include directive
<?php include() ?>
php page directive
无
php scriptlet
<?php ?>
php taglib directive
无
其他常用的HTTP函数
header() -- 发送一个原始 HTTP 标头
headers_list() -- 返回已发送(或准备发送)的响应标头的列表
headers_sent() -- 检查标头是否已被发送以及在哪里被发送
setcookie() -- 发送一个 cookie 信息
setrawcookie() -- 发送一个其值未经 urlencode 编码的 cookie
页:
[1]