PHP基础知识点.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流PHP基础知识点.精品文档.一、LAMP网站介绍: 1. 开发语言结构 B/S结构和C/S结构 PHP属于B/S结构 我们将来的工作:基于PHP的WEB开发工程师,属于B/S结构三、HTTP协议: HTTP协议是超文本传输协议。默认端口是80,一般请求方式有GET和POST,特点是无状态。 PHP是超文本预处理器(动态生成超文本的) HTML是就是超文本标记语言。 URL是统一资源定位符,格式:协议名:/主机名:端口/目录./文件名 下面就是一个URL地址(网址) http:/127.0.0.1/shop/home/index.php四、动态网址开发所需的WEB构件: 1. 浏览器:IE、谷歌、火狐。 2. 超文本标记语言HTML 3. CSS样式表 4. 客户端脚本程序:JavaScript 5. WEB服务器:apache 6. 服务器端脚本程序:PHP,ASP.net JavaEE 7. 数据库:MySQL五、网站开发平台介绍 1. ASP.NET 使用使用C#语言,基于微软平台的开发 特点:开发速度快,容易上手,开发成本低,移植性差(仅限Windows系统),相对稳定性差。 2. JavaEE 是使用Java语言加框架开发,属于Sun的 特点:开发速度慢,相对复杂,成本高,但是可移植,相对安全。运行稳定。 3. LAMP 使用php语言开发 特点:开发速度开,相对简单,成本低,可移植,相对安全。维护方便。第一单元【php入门】 a、什么是php b、php的优势是什么 c、php能做什么 d、php的历史 f、php的简单语法规则(大小写、注释、空白和换行、分号使用) g、程序架构 b/s(browser/server)、c/s(client/server) h、开发环境搭建 1.php简单概述 2.b/s与c/s简单比较,区别: -a、运行环境不同(广域网、局域网) -b、安全级别不同(低/高) -c、用户群不同(全部用户/局部用户) -d、系统升级不同(无缝升级/整体升级) -e、用户开启不同(浏览器/客户端软件) -f、侧重点不同(信息流/用户体验) 比如:b/s就是网上的微博、博客;c/s就是在网吧打的网络游戏(奇迹、传奇等) 3.php是什么:运行在服务器端的脚本语言 -Hypertext Preprocessor -personal home page 4.php语言能做什么 -图形化用户界面程序(开心网、赶集网、sina等等 phpcms、dedecms、帝国cms、drupalcms) -服务器端运行脚本程序 5.简单特点: -a、大小写(自己定义的类名和函数名是不区分的) -b、分号 -c、程序的注释 -d、空白和换行 6.wamp集成环境安装 7.php的开发框架有:yii、cakephp、CodeIgniter、zendframework等 php的cms有:phpcms、dedecms、帝国、drupal、joomla等 * *第二单元【php语法基础】 1.变量的定义 -美元符号"$"加上变量名称,例如$str。 -变量名称命名规则:是由字母和下划线开始,后接任意数量的字母、数字、下划线 2.可变变量 例如: $a = "hello" 则$a 和 $hello 同理 3.数据类型: 四个标量类型(int,string,float,boolean) 两个复合类型(array,object) 两个资源类型(resource,NULL) 4.什么是常量 常量的值是固定的,不能随便变化的,例如圆周率、系统里边的用户名、密码等等。 5.常量名的命名规则 没有美元符号"$",名字的命名规则和变量名一样,按照习惯都是大写的 6.常量的定义 define('CIRCLE',3.14159); defined('CIRCLE');/判断是否有定义常量CIRCLE 7.常量的使用,直接引用 例如可以这样使用上边的变量echo CIRCLE; 还可以使用php系统里边自带的常量例如 echo _FILE_; echo _LINE_; 8.变量和常量的区别 a.常量前面没有美元符号($); b.常量只能用 define( ) 函数定义,而不能通过赋值语句; c.常量可以不用理会变量范围的规则而在任何地方定义和访问; d.常量一旦定义就不能被重新定义或者取消定义; e.常量的值只能是标量类型。 9.php外部变量$_POST、$_GET; 10.自定义函数 11.变量的能见度 12.函数参数传递(两种) 13.代码重用(include,require,include_once,require_once) 14.递归调用 15.运算符(算术、递增/递减、比较、逻辑、位、其他) 特殊运算符 '.' 是连接符 ".=" 是连接赋值 "" 屏蔽错误信息 $link=mySQl_connect(主机,用户名,密码) "?:" 三目运算符 16.流程控制(顺序、选择、循环) 作业,自己写一个函数,输入年份判断出当前输入参数是否是闰年 (能被4整除并且不能被100整除,或者能被400整除) * *第三单元【数组】 定义:具有相同类型和名称的变量的集合。 1.数组按照键名分索引和关联 2.数组赋值方式(一维、二维) 3.遍历数组方式: 遍历定义:沿着一定的路线,依次对数组里边的每个元素做一次且仅做一次访问。 foreach(数组 as 键名 => 值名) foreach(数组 as 值名) while(list(键名,值名)=each(数组) while(list(,值名)=each(数组) 自学通过for方法遍历数组 $_arr = "a" $_arr = "b" $_arr = "c" $_arr = "d" for($i=0; $i<count($_arr); $i+) echo $_arr$i; $arr = "grape" $arr = "banana" $arr = "pear" $arr = "milk" $arr = "apple" $arr = "orange" 利用第二种方法(array)重新定义以上数组 4.数组和栈的操作(子弹夹) array_push(目标数组,字符串)将字符串压入数组的最后 array_pop(目标数组)将数组最后的元素弹出并返回 5.数组和队列的操作 array_unshift(目标数组,字符串)将字符串放到数组的开始位置 array_shift(目标数组)删除数组的第一个元素并返回 6.数组和指针的操作key() current() next() prev() reset() end() 7.数组常用函数count()、array_sum()、in_array()、extract()、 array_unique()、sort()、rsort()、array_flip() print_r() is_array() isset()检查变量是否被定义 empty()检查变量是否为空 unset()删除变量 8.了解函数 array_change_key_case(目标数组,型态常数) 会将目标数组索引值中所有字符串索引的英文字母转换为大写或小写CASE_UPPER/CASE_LOWER array_chunk()分隔数组 以指定的个数分割 array_count_values()计算目标数组中各值出现次数 array_filter()利用指定的函数挑选数组元素 数组的合并 array_merge() Array_merge_recursive() 差集Array_diff() Array_diff_assoc() 交集array_intersect() Array_intersect_assoc() 9.预定义数组($_GET $_POST $_FILES $_COOKIE $_SESSION) 作业: 1.写一个函数这个函数邮一个输入参数,要求传入一个正整数m, 经过处理返回一个索引数组,数组索引从0开始递增, 数组的值从1开始一直到m,例如输入数字4则返回的数组格式为: Array 0=>0 1=>1 2=>2 3=>3 2.在上一题的基础上写一个函数,要求输入两个正整数m,n, 经过处理返回一个索引数组,要求数组索引从n开始递增, 数组值从1开始一直递增到m,例如输入参数4,100则返回: Array 100=>0 101=>1 102=>2 103=>3 第四单元【字符串】 字符串:由0个或多个字符组成的有限序列。 1.字符串的三种定义方式(单引号、双引号、定界符) -单引号定义(转义'和) -双引号定义(转义n r t $ ") -定界符方法<<<eof 2.函数部分 explode/implode substr()* str_replace/trim/ltrim/rtrim strchr(str, search)获得指定字符串最开始出现到字符串最后的内容 strrchr(str, search)获得指定字符串最后出现到字符串最后的内容 strpos(str, search)获得指定字符串最开始出现的位置 strrpos(str, search)获得指定字符串最后出现的位置 ucfirst(str)将字符串第一个字母大写 ucwords(str)将字符串的每个单词的第一个字母大写 strlen(str)获得字符串长度 strcmp(str1, str2)比较两个字符串大小, 返回负数表示 str1 小于 str2; 返回正数表示 str1 大于 str2; 返回零表示二字符串相同 strtr()字符串翻译 -strtr(str, mode, replace) -strtr(str,array) strtolower 将字符串转化为小写 strtoupper 将字符串转化为大写 parse_url(str)解析完整的url转变为为数组 parse_str(str,out)解析请求字符串转变为数组 htmlspecialchars()转换html代码为实体代码 printf/sprintf %b %d %c %x %s %f %X printf(格式化内容,具体信息); printf("%d%b%c",10,20,10) b 整数转成二进位。 c 整数转成对应的 ASCII 字符。 d 整数转成十进位。 * f 单倍精确度数字转成浮点数。 * o 整数转成八进位。 s 转成字符串。 * x 整数转成小写十六进位。 X 整数转成大写十六进位。第五单元【表单处理】 表单在网页的作用不可小视,主要负责数据采集工作,比如可以采集用户名、密码、email邮箱等信息。 表单可以分为3部分: 表单标签:<form action="地址" method="post/get"> 表单域:文本框、密码框、下拉列表、单选框、复选框、文本域、隐藏域、附件 表单按钮:submit reset $_GET $_POST 1.为什么要用表单,表单可以实现两个或多个页面之间传递数据。 2.制作一个表单(文本框、密码框、单选按钮、多选按钮、下拉菜单、文本域、隐藏域) 3.制作一个接收页面,用于接收表单数据 4.分别利用post和get两种方式进行表单数据传递 5.利用超链接方式进行get方式传送数据 作业: 进行表单验证 * *第六单元【其他常用函数】 date(format,timestamp)/格式化时间信息,并返回 date_default_timezone_set("asia/shanghai");/设置时区 time()/返回当前时间戳信息 mktime(hour,minute,second,month,day,year) mktime(小时,分钟,秒,月,日,年)/取得一个日期的 Unix 时间戳 header()发送http头信息 /当前页面输出内容是html,编码为utf-8格式 header("content-type:text/html; charset=utf-8"); <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> /当前页面输出内容的格式是图片 header("content-type:image/png gif jpeg"); /页面5秒后要跳转到新网址 header("refresh:5;url= /页面重定向 /window.location.href=" header("location: abs(-4.6)/取得绝对值信息 ceil(4.0)/向上取整 urlencode(str)替换所有非字母数字(-_.)的字符,变为%后面跟两位16进制数,空格变为+号(字母、数字、-、_、.不给替换) urldecode(str)对已%#编码的URL进行解析还原 max()/取得最大值 -echo max(1, 3, 5, 6, 7); / 7 -echo max(array(2, 4, 5); / 5 -echo max(0, '1hello'); / 1hello -echo max('hello', 0); / hello -echo max(-1, 'hello'); / hello -print_r(max(array(2, 4, 8), array(2, 5, 7); / array(2, 5, 7) -print_r(max('string', array(2, 5, 7), 42); / array(2, 5, 7)数组和非数组比较数组总认为最大 min()/取得最小值 mt_rand(65,94)/获得随机数 round()/四舍五入取整 flush()/输出准备区内容output_buffering=Off(php.ini) chr(mt_rand(65,90)随机获得字母 ord(chr(mt_rand(65,90)将字母转化为对应的ascII码数字 basename(路径名)获得路径中文件名部分 d:/web/phpone/five/form.html第七单元【php连接mysql】 *mysql_connect(主机,用户名,密码) 打开一个到 MySQL 服务器的连接 *mysql_select_db(数据库,连接数据库资源) 选择 MySQL 数据库 *mysql_query("set names utf8");设定字符集 *mysql_close() 关闭 MySQL 链接 *mysql_query(语句) 发送并执行一条sql语句 *mysql_fetch_array(结果资源)从结果集中取得一行结果(索引/关联数组) *mysql_fetch_assoc(结果资源)从结果集中取得一行结果(关联数组) mysql_fetch_row(结果资源)从结果集中取得一行结果(索引数组) mysql_fetch_object(结果资源)从结果集中取得一行结果(对象) mysql_errno()返回错误号码 *mysql_error()返回错误信息 *mysql_affected_rows()获得受影响的结果数目【增、删、改、查】 *mysql_num_rows(结果资源)用于计算查询结果中所得行的数目【查】 *mysql_insert_id()传回最近一次使用 INSERT 指令产生的自动增长 ID 值 mysql_result(结果集,索引行,字段)指定获取结果 mysql_free_result(结果资源)释放结果集 mysql_num_fields(结果资源)用于计算查询结果中所得列的数目 mysql_fetch_field(结果资源)从结果集中取得一列的结果,以对象形式返回 mysql_pconnect(主机,用户名,密码)永久连接数据库 mysql_connect(); 学习步骤: 1.建立一个数据库 班级号 2.数据库里边建立一个数据表 sw_user u_id int 主键、自增 u_name varchar(24) 姓名 u_psd varchar(128) 地址 u_sex varchar(2) 性别 u_hobby varchar(32) 爱好 u_xueli varchar(8) 学历 u_introduce text 简介 u_itime datetime 注册时间CREATE TABLE sw_user ( u_id int(11) NOT NULL auto_increment COMMENT '自增id', u_name varchar(32) NOT NULL COMMENT '会员名', u_psd varchar(64) NOT NULL COMMENT '会员密码', u_sex varchar(4) NOT NULL COMMENT '性别', u_hobby varchar(32) NOT NULL COMMENT '爱好', u_xueli varchar(8) NOT NULL COMMENT '学历', u_introduce varchar(128) NOT NULL COMMENT '简介', u_itime datetime NOT NULL COMMENT '注册时间', PRIMARY KEY (u_id) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='会员表' AUTO_INCREMENT=1;insert into sw_user values (null,'张三','123','男','篮球,足球','初中','我是张三',now();insert into sw_user values (null,'李四','456','女','旅游,看书','高中','我是李四',now();insert into sw_user values (null,'王五','789','男','爬山,上网','大学','我是王五',now(); 3.实现通过html表单写入数据到数据库 u_id u_name u_psd u_sex u_hobby u_xueli u_introduce 1 张三 123 男 篮球,足球 初中 我是张三 2 李四 456 女 旅游,看书 高中 我是李四 3 王五 789 男 爬山,上网 大学 我是王五 4.(自选)将写入的数据展现到页面 * *第八单元【留言板】 学习留言板目的: a、复习表单知识 b、复习数据库知识 c、可以对php编程有一个简单认识 本章重点: a、表单使用<form> b、数据库操作 c、post和get方式传值,$_POST $_GET d、隐藏域传值 e、外键使用 本章难点: a、外键使用 b、post和get方式传值 知识点: a、form b、$_POST $_GET使用 c、hidden d、html标签使用 f、javascript语言应用 g、表单验证 具体实现步骤: 1.在数据库建立两张表 sw_leave_word 和 sw_back_word (留言表和回复表) sw_leave_word: 字段 数据类型 leave_id int 主键、自增 leave_title varchar(20) 标题 leave_content text 内容 leave_time datetime 添加时间 sw_back_word: back_id int 主键、自增 back_leave_id int 外键(留言id) back_content text 内容 back_time datetime 回复时间CREATE TABLE sw_leave_word ( leave_id int(11) NOT NULL auto_increment COMMENT '自增id', leave_title varchar(64) NOT NULL COMMENT '留言标题', leave_content text NOT NULL COMMENT '留言内容', leave_time datetime NOT NULL COMMENT '留言时间', PRIMARY KEY (leave_id) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='留言表' AUTO_INCREMENT=1;CREATE TABLE sw_back_word ( back_id int(11) NOT NULL auto_increment COMMENT '自增id', back_leave_id int(11) NOT NULL COMMENT '留言id:外键', back_content text NOT NULL COMMENT '回复内容', back_time datetime NOT NULL COMMENT '回复时间', PRIMARY KEY (back_id) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='回复表' AUTO_INCREMENT=1; 2.制作添加留言表单,实现留言的添加 3.留言明细页面,逐条显示留言信息 4.修改留言,对需要修改(get方式传递被修改留言id值,再利用隐藏域方式传递给接收页面)的项目进行修改 5.留言详细显示功能,有的留言内容比较多,在明细页面不可能全部显示出来,这是需要留言详细显示功能。 (利用get方式传递留言id) 6.在详细页面可以实现回复功能和回复留言展示,步骤:制作一个回复表单和接收数据页面 7.(自己实现)删除留言,对无效、无用的留言实现删除功能(这时需要用get方式传递被删除留言id值)第九章 面向对象 为什么要用面向对象编程: 1.是一门流行语言 2.程序思想 3.框架的使用 4.模块化-易于维护 5.框架要使用面向对象 OOP (Object-Oriented Programming) OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。 什么是类: 类是具有相同属性和服务(功能、行为)的一组对象的集合 什么是对象 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。 一个对象由一个类名并包括属性说明和服务说明两部分。 A 1.理解面向对象思想 2.理解类和对象(实例化对象) 3.类的成员属性和方法 4.对象访问成员属性和方法 类:车、灯、鱼、人、学生 对象: 车(车甲、乙、丙、丁等)车撞树 灯(灯甲、乙、丙、丁等)灯坏了 鱼(鱼甲、乙、丙、丁等)鱼吐泡 人(张三、李四、王五、赵六、田七等)人打架 学生(学生甲、乙、丙、丁)学生迟到 B 1.实例化对象在内存中如何分配 2.对象中成员属性和方法的访问、"$this"关键字使用 3.构造方法和析构方法 构造函数:实例化对象首先第一个需要做的事情就是构造函数。一个小孩出生到5岁之前,所有的事情都是父母帮助做的,包括起名字、穿衣服、吃饭等等。 析构函数:一个对象被使用完后需要做一些善后工作,这些善后工作是不需要人为干预的,例如资源释放、变量删除等。例如:一个小狗死后,主人非常爱惜它,就把它埋在了家后园的一颗树下。小狗被埋这件事情是主人做的,不是狗做的。这就是析构函数。 C 类的三大特性:封装、继承、多态 1.类的继承: 子类和父类之间的事情 B类的对象拥有A类的全部属性与行为,称作B对A类的继承 车(汽车、卡车、小轿车、客车等) 灯(台灯、灯管、路灯、灯塔等) 鱼(金鱼、鳄鱼、鲨鱼、鲸鱼、鲤鱼、刀鱼等) 人(黑人、白人、黄种人、中国人、美国人、男人、女人等) 2.类的封装 3.类的重写 子类和父类之间的事情,就是说父类有的方法,子类不但可以直接使用,还可以在子类中 重新定义具体内容,例如有一个父亲会驾驶汽车,那么他的儿子也会驾驶汽车,但他的儿子 可以不驾驶汽车,而驾驶飞机,这就是类方法的重写。 4.类中的修饰符:public、protected、private public:类成员访问没有限制,内部外部成员都可以访问 protected:受保护的,不能被类外部成员访问,该类的子类可以访问,可以实现对成员属性的读、写操作 private:私有的,只能类里边的成员自己访问,类外部的成员都不能访问 5.了解内容_get()、_set() 、_unset() 一个属性被修饰为私有的(private),那么这个属性在类的外部是不可以读取和修改的,现在有一种方法 可以设置该属性既是私有的,还可以被类的外部成员读取即_get()和_set() function _get($key_name) return $this -> $key_name;/$key_name泛指调用的私有属性名 function _set($key_name, $key_value) $this -> $key_name = $key_value; D 1.final(最后的)关键字使用 该关键字修饰的类不能被继承 该关键字修饰