导航

php入门到精通(复习笔记)

Posted on 2017-05-04 17:01  deeply_desire  阅读(480)  评论(2编辑  收藏  举报

第一章:php语言基础

1,标记风格:

①<?php echo “hello”;?> ②<script language="php">echo "php";</script> ③<? echo "hello";?> ④<% echo "hello";%>。这里推荐使用第一种。

2,注释:

①单行注释://这是注释。②多行注释 /*这里是多行注释*/

3,数据类型八种:

①整型,②浮点型,③布尔型,④字符串型,⑤数组类型,⑥对象类型,⑦资源类型,⑧null

重点注意:一,定义字符串有三种,单引号,双引号,界定符<<<,其中定义字符串时,尽量用单引号,因为双引号会被php进行解析需要时间。在输出字符串时尽量用双引号,因为单引号内的变量不会被解析成变量的值,会按照原字串输出,例如:<?php $str='hello'; echo '$str';?>此时输出的是$str,而不是hello。二,在使用资源类型时,系统会自动启用垃圾回收机制,释放不再需要的资源,所以资源很少需要手动释放。三,空值null不区分大小写,被赋予空值有三种情况:还没有被赋值,被赋值为null,unset()函数处理过。其中unset函数没有返回值。

4,检测数据类型函数

is_bool,is_string,is_float,is_integer,is_null,is_array,is_object,is_numeric(检测变量是否为数字或者由数字组成的字符串)

5,声明和使用常量

定义常量:①define(“string constant_,mixed value,case_sensitive=true”)

最后一个参数声明大小写是否敏感,TRUE表示不敏感

判断一个常量是否已经定义:defined(constant_name);

6,常用预定义常量

__FILE__:输出当前文件路径

__LINE__:输出当前行数

7,变量的作用域:

引用:给原变量的内容再起一个名字,赋值:将原变量内容复制下来,开辟一个新的内存空间来保存

局部变量:只能作用于函数内部使用

全局变量:被定义在所有函数外的变量,作用域是整个php文件。但在用户自定义函数内部是不可以使用的,除非在自定义函数内部使用global声明

静态变量:使用static声明的变量,在函数调用结束后仍然保留变量值

例如:function hh(){

  static $message=0;

  $message+=1;

  echo $message;

}

for($i=0;$i<10;$i++) hh();

结果输出1...8,9,10一共十个数,这里$message是静态变量,在第一次初始化后,后面就会略过初始化那行代码

8,可变变量:也就是$$const

9,php预定义变量:

$_SERVER,$_GET,$_POST,$_COOKIE,$_SESSION,$GLOBALS

10,算术运算符:

①其中使用%求余时,如果被除数是负数,那么结果也是负数

②如果+号两边有字符类型,则自动转换成整型,如果是字母,则输出为0,如果是以数字开头的字符串,则截取字符串头部的数字,再进行运算

③三元运算符中TRUE表示选择第一个值,FALSE选择第二个 element?1:0

④运算符的优选问题:当表达式太多考虑用括号

10,函数间参数传递

被传入的称为实参,函数定义时的参数称为形参,传递的方式有:按值传递,按引用传递,默认参数共三种

①按值传递:将实参的值传入到形参中,在函数内部的操作针对形参进行,操作的结果不会影响实参的值,函数返回后,实参的值不会改变

②按引用传递,就是将实参的内存地址传递给形参,这时,在函数内部所有对形参的操作都会影响到实参的值。函数返回后实参的值会随函数改变。

③默认参数:即指定某些参数为可选参数,将可选参数放在参数列表末尾,并且指定其默认值为空,当使用默认参数时,非默认的必须放在默认的左侧。从php5开始,默认参数也可以通过引用传递。

11,对函数的引用,例如

function &hello(){}

$str=&hello();

12,unset()函数只是断开了变量和变量内容之间的联系

13php编码规范

①类命名:首字母大写,使用大写字母作为词的分隔,例如:Name,SuperMan,BigClassObject

②类属性命名:属性名应该是m为前缀,后面和类命名一样。例如:mValue,mLongTitle

③方法名:和类命名规范一致,另外注意方法名和功能对应,例如吃饭:eat

④方法中参数命名:除了第一个单词首字母小写,其他的和类命名一样

⑤变量命名:所有的单词首字母都小写,单词间使用"_"来隔开

⑥全局变量:前缀带个g

⑦常量:全用大写字母,单词间使用"_"隔开

⑧静态变量:使用前缀s

⑨函数命名:全部小写,单词间使用"_"分隔

 

第二章:流程控制语句

1,条件控制语句:if,if ... else,if...elseif...else,switch...case

2,循环控制语句:while,do...while,for,foreach

3,break,continue

4,控制语句的另一种格式:在关键词后加“:”,然后以endif,endforeach等结尾

 

第三章:字符串操作

1,在进行sql语句查询之前,所有的字符串都要加上'',避免可能的sql注入或者错误

2,去掉字符串首尾空格和特殊字符trim()

3,自动转义还原字符串,addslashes()对特殊字符串转义,反转义:stripslashes()。数据在插入数据库之前,有必要对特殊字符串转义

4,php还可以对指定的字符转义:addcslashes($str,$selectstr),对指定的字符串还原:stripcslashes()

5,获取字符串的长度:strlen($str),该函数返回字符串长度值。其中汉字占两个字符长度。

6,截取字符串:substr(string,int start,int length);如果start为负数就表示倒数从第几个开始,默认从第0个开始。如果length为负数,表示取到倒数第几个停止。截取中文字符串时,如果截取的字符串个数是奇数,那么会出现乱码。

7,比较字符串的长度:strcmp(str1,str2);该函数比较的是字节数,对于字符串区分大小写。strcasecmp()这个函数同样比较字符串但不区分大小写。

8,查找字符串:strstr(string haystack,str needle),指定从haystack字符串中查找字符串needle首次出现的位置到haystack字符串的末尾的子字符串。该函数区分大小写

9,检索字符串出现的次数:substr_count(str1,str2)。检索str2在str1中出现的次数

10,字符串替换substr_replace($str,newstr)

11,分割字符串:explode()

12,合成字符串:implode()

 

第四章:正则表达式

正则表达式由:元字符(特殊字符),文本字符(普通字符)组成。

1,行定位符。^表示行的开始,$表示行的结束。例如^tm表示要匹配以字串tm开头的字符串

2,单词定界符,\btm\b匹配完整的单词tm,\Btm\B则相反,匹配非完整的单词

3,字符类[],正则表达式区分大小写,如果要忽略就用[],一个中括号只能匹配一个字符,例如[Tt][Mm]就可匹配所有的tm

4,选择字符"|",该字符可以理解为“或”,例如:T|tM|m

5,连字符“-”,例如,[a-z],[0-9]

6,排除字符:[^],将^放大方括号里面就是排除的意思,例如[^a-z]就是不要匹配a-z的字符

7,限定符,"?"表示匹配前面的字符0次或1次,"+"匹配前面的字符一次或者多次,“*”匹配前面的字符0次或者多次,{n}匹配前面的字符n次,{n,}匹配前面的字符最少n次,

{n,m}匹配前面的字符最少n次最多m次

8,点号字符(.),点字符可以匹配换行符以外的任意字符。

9,转义字符"/",例如可以对上述的"."进行转义

10,预定义字符集:\d:相当于[0-9],\D:任意一个非十进制数字,\s:任意一个空白字符,\S:任意一个非空白字符,\w任意一个单词字符相当于[a-zA-Z0-9],\W相反

11,括号字符().

12,反向引用,就是依靠子表达式的记忆来匹配连续出现的字符串,如连续匹配两个it,(it)\1,其中1表示第一个小括号的表达式

13,模式修饰符:i表示忽略大小写,x表示忽略空白字符

14,ereg(pattern,string,array),在字符串string中匹配表达式pattern,如果匹配成功返回TRUE,否则返回FALSE,如果有第三个参数,就将成功匹配的字符串,依次存储到regs数组中。该函数区分大小写。同样的函数不区分大小写的是eregi()

15,ereg_replace(pattern,string,string2),在字符串string2中匹配表达式pattern,如果匹配成功就用string来替换字符串,并返回替换后的string2.区分大小写

16,split(pattern,string,limit),使用正则表达式分割字符串,分割后的字串依次存放在数组中,该函数返回数组,limit限制数组元素个数

17,preg_grep(pattern,input),使用input数组中的元素一一匹配表达式pattern,最后返回所有匹配成功的元素所组成的数组

18,preg_match/preg_match_all(pattern,subject,macthes),在字符串subject中匹配表达式pattern,函数返回匹配的次数,如果有第三个参数,那么每次匹配的结果都被存储在数组matches中,函数preg_match()的返回值是0或者1,因为一旦匹配成功就返回了。而preg_match_all会一直查找。所以第三个参数对于第一个函数可有可无,但是对于第二个函数是必须有的。

19,preg_quote(str),对字符串str中所有的特殊字符转义

20,preg_replace(pattern,replacement,subject,limit),该函数在字符串subject匹配表达式pattern,并将匹配项替换成字串replacement,如果有参数limit,就限制替换几次

 

第五章:数组

1,只要一个键为非数字,就是关联数组。

2,foreach并非操作数组本身,而是操作数组的一个备份

3,list()把数组中的一些值赋给一些变量,list仅能用于索引数组,且索引值从0开始

4,count(array,mode),mode是可选参数,值为0或者COUNT_RECURSIVE(1),如果带上这个参数,本函数将递归的对数组计数,对计算多维数组的有用,此参数默认值0。如果没有这个参数,count默认计算一维数组的元素个数

5,查询数组中指定元素array_search(needle,array,strict),在array中查找,needle的值,即查找指定的值返回键名,如果有第三个参数,则还将在数组中检查给定值的类型

6,获取数组中最后一个元素array_pop()获取并返回数组中最后一个元素,并将数组长度减一,如果数组为空或者不是数组返回null。

7,向数组中添加元素:array_push(array,value)

8,删除数组中重复的元素,array_unique(array)

 

第六章:php和web页面交互

有两种方法:①通过表单提交,②通过URL传递

表单提交有两种方法:GET和POST,其中GET方法是通过将表单内容附加在URL地址后面发送,POST方法是将表单中的信息作为一个数据块发送到服务器上的处理程序中,在浏览器的地址栏不显示提交的信息,method属性默认的方法为GET方法。form标记的属性,name:表单名称,method:提交方法,action:提交地址,enctype:设置表单内容的编码方式,target:设置返回信息的显示方式(例如_blank表示在新的窗口中显示)

输入域标记<input>:

type属性:text:文本,password:密码域,file:文件域,image:图像域,radio:单选框,CheckBox:复选框,submit:提交,button:按钮,hidden:隐藏

选择域标记<select>和<option>

文本域标记<textarea>

1,若要使用GET方法提交表单,URL的长度应该限制在1MB字符以内,如果发送的数据量太大,数据将被截断。

2,使用$_SESSION变量可以获取表单元素的值,格式为:$_SESSION[name];使用SESSION传参的方法获取的变量值,保存后任何页面都可以使用,但这种方法很耗费系统资源,建议读者慎用。

3,复选框的name值是数组类型

4,urlencode()函数对URL参数进行编码。例如<a href="index.php?id=<?php echo urlencode("这里是被编码的参数值");?>">编码的参数值</a>。对于服务器而言,编码前后的字符串没什么区别,服务器能够自动识别。

5,urldecode()函数对URL参数进行解码。例如<?php echo "您提交的字符串是:".urldecode($_GET['id']); ?>

 

第七章:JavaScript

1,JavaScript数据类型,六种数据类型:字符串类型,数值类型,布尔类型,对象类型,null,undefined

2,JavaScript变量,变量是指程序中一个已经命名的存储单元,它的主要作用就是为数据操作提供存放信息的容器。JavaScript变量严格区分大小写

3,JavaScript中一个分号代表一条语句的结束,如果每条语句在不同的行,那么分号可以省略。建议不要省略,养成良好的习惯。

4,注释://这是单行注释,/*这里是多行注释*/

5,自定义函数函数体:function name(参数){ return var;}

6,JavaScript流程控制语句:分为条件控制语句:if...else,switch...case。循环控制语句:while,for,跳转语句:break,continue。

7,JavaScript常用事件:

鼠标键盘事件:onclick:鼠标单击时触发。onmouseover:鼠标移动到上面时触发。onmousemove:鼠标移动时触发。onmouseout:鼠标移开对象范围时触发。

页面相关事件:onabort:图片在下载时被用户中断触发此事件,onload:页面加载完成时触发,onresize:当浏览器窗口大小改变时触发,onunload:页面将被改变时触发

表单相关事件:onblur:当前元素失去焦点时触发。onchange:当前元素内容发生改变时触发。onfocus:当某个元素获得焦点时触发。onsubmit:表单提交时触发

滚动字幕事件:...

 

第八章:cookie和session

1,cookie:存储在客户端,cookie的功能:①记录访客信息,②页面间传递变量,③将所查看的Internet页存储在cookie临时文件夹中。一般不用cookie保存大量数据或需要加密的安全性数据

2,session:session存储在服务器端,启用session的函数session_start(),在调用这个函数前浏览器不能有任何输出。session_save_path($path),设置session存储的路径,该函数在session_start()函数之前调用。

关于cookie和session的机制和原理需要另行查看相关资料

 

第九章:图形图像处理

1,在php中加载GD库,去掉;extension=php_gd2.dll前面的分号。GD库:是一个开放的,动态创建图像的,源代码公开的函数库,支持GIF,PNG,JPG,wbmp等格式

在PHPinfo函数中可以查看此库是否加载。有关GD库的相关函数或资料可以另行查看资料

2,jpgraph是个强大的绘图组件,它需要gd库的支持,相关的信息可以另行查询资料。

第十章:文件编程

1,打开/关闭文件

resource fopen(filepath,mode);

常见mode:r:只读,r+:读写,W:只写,w:读写,x:谨慎写,x+:谨慎写,a:追加(如果源文件没有就创建,如果有就在后面追加)

fclose(resource handle);

2,读写文件:readfile($filepath);用于读入一个文件并且将其写入到输出缓冲区。发现错误返回FALSE。array file()读入文件,按行存放到数组。file_get_content(),将文件内容读到一个字符串中,用于二进制文件。

3,读取指定长度的字符串:fread($handle,length)

4,将数据写入文件:fwrite(handle.string,length),将string读入handle指向的文件,读入length个长度。file_put_content(filepath,stringdata,flags),将strdata写入到filepath文件中,flags可选。

5,操作文件:bool copy(path1,path2),复制文件,返回bool。bool rename(filename1,filename2),重命名文件。bool unlink(string filename)删除文件。int fileatime(filename) 返回文件最后一次被修改的时间,时间以Unix时间戳的方式返回。array pathinfo(string name),返回一个数组包含文件的路径信息。array stat(filename) 返回文件的相关信息。

6,目录处理:

打开:resource opendir(dirpath),关闭closedir(dirpath),is_dir判断当前路径是否为目录。

7,浏览目录scandir(directory,sorting_order),函数返回一个数组,包含该目录中所有的文件和目录,参数sorting_order指定排序,默认按字母升序排序,如果添加了该参数就是降序。

8,目录操作:mkdir(pathname)新建一个目录。rmdir(dirname)删除一个目录,该目录必须是空的。getcwd()取得当前工作的目录。

9,远程文件的访问,fopen('127.0.0.1/tm/text.html').需要在php.ini中设置allow_url_fopen为ON

10,文件指针,rewind()该函数将文件handle的指针设为文件流的开头。bool rewind(resource handle).

fseek(resource handle,int offset,int whence)函数实现文件指针的定位,handle为要打开的文件指针,offset为指针位置相对whence的偏移量,whence的值包含以下三种:

SEEK_SET,位置等于offset字节,SEEK_CUR,当前位置加上offset个字节,SEEK_END,文件尾加上offset字节

bool feof(resource handle)判断文件指针是否到了文件末尾,如果到了文件末尾就返回FALSE,否则返回TRUE

ftell()返回当前指针的位置。int ftell(resource handle)

11,锁定文件bool flock(resource handle,int operation),operation参数值:LOCK_SH:共享锁,LOCK_EX:排它锁,LOCK_UN:释放锁,LOCK_NB:防止锁定时堵塞

12,文件上传,move_upload_file().php支持多文件上传,但是要对文件上传域使用数组命名

 

 

第十一章:面向对象

1,三大特点:继承,封装,多态。

2,函数和成员方法的区别,函数:实现某个独立的功能,成员方法,实现类的一个行为。

3,类常量输出:类名::常量名,类名的输出不需要实例化这个类

4,构造方法是初始化对象时自动调用,如果类中没有这个方法,那么php会自动生成一个构造方法,没有任何参数,没有任何操作

5,对象不再使用时,调用析构方法。

6,多态的实现体现在覆盖和重载上。

7,$this->和:: ,如果要调用本类中的方法就要用伪变量$this->,$this的意思就是本身,所以$this->只能在类内部使用。当类被实例化后,$this同时被实例化为本类的对象,这时对$this使用get_class()函数将返回本类的类名。

关键字::变量名/常量名/方法名。这里的关键字分为以下三种,parent:调用父类中的成员和常量,self:调用当前类的静态成员和常量,类名:调用本类中的成员和常量

静态方法只能调用静态变量,普通方法可以调用静态变量,使用静态成员除了类不需要被实例化外,另一个就是对象被销毁后,仍然保存被修改的静态数据。

静态成员不需要实例化对象,当类第一次被加载时就已经分配了内存空间,所以直接调用静态成员的速度快一些,但如果静态成员过多,空间一直被占用,反而影响系统的性能

8,final关键字,使用final声明的类不可以被继承,使用final声明的方法在子类中不可以被重写或覆盖。

9,抽象类,①抽象类是一种不能被实例化的类,只能作为其他类的父类使用,抽象类使用abstract关键字声明,②抽象类也可拥有成员方法和成员变量,③抽象类至少包含一个抽象方法,④抽象方法没有方法体,其功能只能在子类中完成。⑤抽象方法也是使用abstract关键字描述,6抽象方法后面有分号,例如abstract function n();

10,接口类,通过interface关键字声明,类中只能包含未实现的方法和一些成员变量。例如:function n();,不要用public以外的关键字来修饰接口中的类成员。对于方法不写关键字也可以,这是接口类自身的属性决定的。子类是通过implements来实现接口的。如果要继承多个接口可以使用interface1,interface2逗号隔开。接口类中的所有未实现的方法必须在子类中全部实现。

11__autoload()可以自动实例化需要使用的类

第十二章:mysql

1,启动mysql,第一种方法直接在服务里面启动,第二种是在DOS下面>net start mysql

2,连接mysql,>mysql -u root -p password(注意要提前将mysql的bin目录加到环境变量中)

3,断开mysql>quit;

4,停止mysql>net stop mysql

5,创建数据库:create database 数据库名

6,查看数据库:show database

7,选择数据库:use databasename

8,删除数据库:drop database 数据库名

9,建表create table

10,表字段:fieldname type notnull defaultvalue auto_increment primary key

11,查看表结构:desc 表名

12,修改表结构:alter table tablename add/modify filedname type not null defaultvalue...。修改表列的前提是要将表中的数据全部删除。

13,重命名表,rename table1 to table2

14,删除表:drop table tablename

15,备份:>mysqldump -u root -p pwd databasename > filepath。恢复:>mysqldump -u root -p pwd databasename < filepath

第十三章,php访问mysql的一般步骤

1,连接mysql,mysql_connect('hostname','username','pwd');

2,选择数据库,mysql_select_db(数据库名,$link),如果没有$link参数就默认使用上一个打开的连接

3,执行sql,mysql_query(数据库名,$link)

4,释放结果集,mysql_free_result()

5,关闭连接,mysql_close($link),但php中与mysql是非持久连接,系统会自动关闭,但如果网站访问量太高,最好手动关闭。

6,获取查询结果集中记录数:mysql_num_rows(resource result),例如:$nums=mysql_num_rows($sql);