PHP基础知识点.doc_第1页
PHP基础知识点.doc_第2页
PHP基础知识点.doc_第3页
PHP基础知识点.doc_第4页
PHP基础知识点.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、LAMP网站介绍: 1. 开发语言结构 B/S结构和C/S结构 PHP属于B/S结构 我们将来的工作:基于PHP的WEB开发工程师,属于B/S结构 三、HTTP协议: HTTP协议是超文本传输协议。默认端口是80,一般请求方式有GET和POST,特点是无状态。 PHP是超文本预处理器(动态生成超文本的) HTML是就是超文本标记语言。 URL是统一资源定位符,格式:协议名:/主机名:端口/目录./文件名 下面就是一个URL地址(网址) /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; $i0 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部分: 表单标签: 表单域:文本框、密码框、下拉列表、单选框、复选框、文本域、隐藏域、附件 表单按钮: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); /当前页面输出内容的格式是图片 header(content-type:image/png gif jpeg); /页面5秒后要跳转到新网址 header(refresh:5;url=/five/string.php); /页面重定向 /window.location.href=/five/form.html; header(location:/five/string.php); 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、表单使用 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; D1.final(最后的)关键字使用 该关键字修饰的类不能被继承 该关键字修饰的方法不能被重写 2.static(静态)关键字使用(类的内部、外部、子类) 实例化对象在内存中的分配有讲到大的数据在内存被分配到堆空间里边。现在有一个例子:有一个 学生这个类,里边有一个成员属性是国家,标识该对象是属于哪个国家的,比如美国、英国、德国等 ,这个类在实例化对象时候,每个对象在内存中都会分配一个空间用于存放国家这个成员属性,如果 有100个对象,那么在内容中会分配100个相应的空间。如果这个类的使用对象是在中国境内,那么 每个对象的国家属性就会是一样的,即中国,相应的在内存中会有100个空间存放100个相同的内容 这会造成空间浪费,其实到这里我们可以知道100个相同的内容用一个空间存放就可以,反正都是一样的, 这就产生了静态化概念static。 用static修饰的成员属性,该属性就不是对象的,而是类的。 3.self和parent关键字使用 $this、self、parent三者的区别 $this :泛指调用该方法的当前对象,在类的内部调用自己的属性和方法时可以使用$this self:代表当前类,可以在类的内部调用自己的静态成员和类常量 parent:代表父类,在子类可以使用parent调用父类的静态成员和父类常量 在类的内部访问类中的成员(属性和方法),可以用$this,该关键字泛指对象,这是访问一般的类 成员,如果访问的成员是用static关键字修饰的,就不能用$this了,因为用static修饰的类 成员是被类本身拥有,不属于任何对象了,这时候需要用self关键字修饰 self:成员 在类的外部访问类本身拥有的成员可以这样 类名:成员属性。 在子类中访问父类拥有的成员可以用parent关键字 parent:成员属性 4.const(常量)关键字使用 在php中可以定义常量,类外部用define定义,类内部用const定义。 常量的拥有者是类本身,类内部访问常量用 self:常量 类外部访问常量用 类名:常量 子类访问常量 parent:常量 5.类成员的访问self、类名、parent 6.魔术方法clone、_call、_autoload使用 clone:在一个项目里边我们有时候需要两个或多个完全一样的初始化对象,这时候可以使用clone技术 不用clone技术也可以,不过每个新的对象都需要初始化属性值,这样比较繁琐,也容易出错, 使用clone就比较简单,克隆出来的多个对象彼此是独立的,互不相干。 $p2 = clone $p1; _call:在类的使用过程中,如果一个对象调用的方法不在类里边,那么这时候程序要报错,然后程序退 出不能继续运行。这样做用户体验非常不好,如果有一种方法可以使得程序报错完后可以继续运 行,这样的程序给人更智能、用户体验更好的感觉,这时候就可以用_call public function _call($method_name,$args) echo 你访问的方法:; echo $method_name; echo 参数:; print_r($args); echo 不存在; _autoload:开发一个软件系统,往往里边会有很多类,在初始化类对象之前需要先include这个对 象对应的类文件。所有的类不能都放到一个文件(文件臃肿,不易维护),这样就会在程 序开始处有很多的include列表,这样做非常繁琐,出现一个新的类就需要被include, 有没有一种方法可以使得被include的类文件在实例化对象时候才引入,否则不动作, 答案是有的,这时候可以用魔术方法_autoloa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论