1. 下载软件
PHP vc11 (VS2012) http://windows.php.net/download/
Apache http://www.apache.org/dyn/closer.cgi/httpd/binaries/
mySQL http://www.mysql.com/downloads/
或者直接下载xampp (包括PHP, apache, MySQL) https://sourceforge.net/projects/xampp/files/ (这个最全且简单)
2. 配置
Apache
httpd.conf
DocumentRoot 文档根目录 DocumentRoot "C:/xampp/htdocs"
如果新建的php文件index.php放在这个目录,则http://localhost/index.php (http://127.0.0.1/index.php)
PHP
php.ini
3. hello world例子
<html>
<head>
<title> first program</title>
</head>
<body>
<?php
echo "hello world";
?>
</body>
</html>
保存为1.php
http://localhost/1.php
4. 数据类型
string :字符串, 要用单引号或双引号,特殊符号加转义符号\
integer :整型
double (floating point number):双精度型(浮点型)
boolean : 布尔型 true/false
array :数组
object :对象
变量名要以“$”开头,且区分大小写
5. 运算符
算术运算符:+、-、*、/、%、++、--
字符串运算符:.
赋值运算符:=、+=、-=、*=、/=、%=、.=
位运算符:& 、| 、^ 、<< 、>> 、~
逻辑运算符:&& (And) 、|| (Or) 、xor (Xor) 、! (Not)
比较运算符:< 、> 、<= 、>= 、== 、===、!=
其他运算符:$、& 、@ 、-> 、=>、? :
变量名要以“$”开头,且区分大小写
6. 条件分支语句 循环语句
6.1 条件分支语句
if (expr) {
...
} else {
...
}
switch (expr) {
case value1:
...
break;
case value2:
...
break;
...
default:
...
break;
}
6.2 循环语句
while (expr) {
...
}
do {
...
} while (expr);
for (expr1; expr2; expr3) {
...
}
7. 函数
传值与传址(引用)区别,传址(引用)时在行参和实参前面都要加上&, 实参值在调用前后会变化
传值
function add($num1, $num2)
{
return ($num1+$num2);
}
$num = add(1+2);
传址(引用)
function refexample(&$num)
{
$num = $num+1;
}
$m = 1;
refexample(&$m);
echo "\$m=$m <br>";
8. 数组
$age = array(1, 2, 3, 4, 5);
$name = array("John", "Jack", "Tom");
echo $age[0] ->1
print_r($name)
8.1 数组合并
$arr1 = array('Earth','Venus');
$arr2 = array(4=>'Mars',5=>'Jupiter',6=>'Saturn');
$planet = array_merge($arr1,$arr2);
8.2 数组遍历
foreach(array_name as $value)
{
statement;
}
foreach(array_name as $key => $value)
{
statement;
}
8.3 数组函数
count() 数组个数
current()当前指针指向的index、reset()指向index=0的那个、end()指向最后一个、next()下一个和prev()前一个
sort() 按字母顺序排序, 这个会删除原来数组值,重新按字母顺序生成新数组
rsort() 反向排序,这个会删除原来数组值,重新按字母顺序生成新数组
ksort() 按key排序,并且保持数组的原索引关系不变
asort() 按字母顺序排序,并且保持数组的原索引关系不变
9. 字符串处理函数
Ltrim()函数去除字符串左端的空格
Chop()函数与rtrim()函数作用相同,都是去除字符串右端的空格
Trim()函数去除字符串左右两端的空格
Strlen()函数输出字符串长度
Ucwords()函数将每个单词的首字母大写
Ucfirst()函数将整个字符串首字母大写
Strtoupper()函数将全部字母都大写
Strtolower()函数将所有字母都变成小写
Str_word_count()函数统计字符串中单词个数
int substr_count ( string haystack, string needle [, int offset [, int length]] )
用来统计一个字符串needle在另一个字符串haystack中出现的次数。该函数返回值是一个整数。有两个可选参数offset和length分别表示要查找的起点和长度。值得注意的是,offset是从0而不是从1开始计算的
string strstr ( string haystack, string needle )
用来查找一个子串needle在一个字符串haystack中第一次出现的位置,并返回从此位置开始的字符串。
string strrchr ( string haystack, string needle )
查找一个字符needle在一个字符串haystack中最后一次出现的位置并返回从此位置开始之后的字符串。
mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )
将subject中的所有search替换成replace,并把替换的次数存放在count中
string substr ( string string, int start [, int length] )
返回一个字符串中从指定位置开始指定长度的子串。参数string为原始字符串,start为截取的起始位置(从0开始计),可选参数length为要截取的长度
array explode ( string separator, string string [, int limit] )
用来将一个字符串按照某个指定的字符分割成多段,并将每段安顺序存入一个数组中。该函数的返回值就是一个数组。separator参数为分割符,可以是一个字符串,也可以是单个字符。string为要处理的字符串。参数limit为可选,如果设置了limit,则返回的数组包含最多limit个元素,并且最后那个元素将包含 string 的剩余部分
array str_split ( string string [, int split_length] )
将一个字符串以一定长度为单位分割成多段,并返回由每一段组成的数组。str_split()函数不是以某个字符串为分割依据,而是以一定长度为分割依据。参数string为要分割的字符串,可选参数length设置分割的单位长度
10. 日期时间函数
string date(string format, int timestamp)
返回指定格式的日期时间,timestamp可省略,省略时取当前时间
date("Y/M/d")
array getdate(int timestamp)
转化timestamp时间到某日期时间格式
int mktime ( int hour , int minute, int second , int month, int day, int year)
转化为Unix timestamp格式
strtotime() 函数将某格式的日期时间描述解析为 Unix 时间戳
strtotime("now")
strtotime("3 October 2005")
11. 文件目录操作函数
11.1 文件操作函数
11.1. 1 打开
resource fopen ( string filename, string mode [, bool use_include_path ] )
mode有r,w,a,x, r+,w+,a+,x+
11.1.2 关闭
bool fclose ( resource handle )
11.1.3 读
string fread( int handle, int length )
string fgets( int handle, int length) 读取一行
string fgetc(int handle) 读取一个字符
11. 1.4 写
int fwrite ( resource handle, string string, int length)
int fputs(resource handle, string str, int length)
11.2 目录操作函数
11.2.1 改变目录
string getcwd ( void ) 返回当前工作目录
bool chdir ( string directory ) 改变当前目录
bool chroot ( string directory ) 改变根目录
11.2.2 生成dir
new dir(sting directory) 生成一个dir对象
11.2.3 打开目录
resource opendir ( string path )打开目录
11.2.4 关闭目录
void closedir ( resource dir_handle ) 关闭目录
11.2.5 读取目录
string readdir ( resource dir_handle ) 读取目录
void rewinddir ( resource dir_handle ) 回到目录开头
array scandir ( string directory, int sorting_order) 列出指定路径中的文件和目录
12. 对象
声明类
class 类名(参数类表){
private/protected/public类变量
private/protected/public类成员函数
}
$对象名=new 类名(参数类表);
构造函数是类中的一个特殊函数,这个函数的函数名与类名相同,而且在对象生成时会自动调用
用构造函数实现类的初始化
析构函数时构造函数的相反,在对象引用结束时,自动会调用析构函数。
继承
class 派生类(子类)名 extends 父类名
使用parent 和self进行属性和方法的调用时,需要使用范围解析操作符:::
parent::functionName();
多态
当派生类(子类)中的某个函数的函数名与其父类中的某个函数名重复时,系统在派生类对象中会自动选用派生类中,这就是类的多态
static.静态属性和方法
静态属性和类的常量一样,只属于类本身,通过static来定义。
方法也是一样的。
final关键字
如果我们希望父类中的函数或者属性不想让子类重写,就可以用final进行修饰
current()、reset()、end()、next()和prev()