当前位置: 首页 > news >正文

南昌专业做网站公司哪家好自己创建一个网站

南昌专业做网站公司哪家好,自己创建一个网站,优设网视频剪辑教程,北京专业网页设计公司PHP知识大全 1. 变量如何定义#xff1f;如何检查变量是否定义#xff1f;如何删除一个变量#xff1f;怎样检测变量是否设置#xff1f; $定义 isset()// 检测变量是否设置 defined#xff08;#xff09;// 检测常量是否设置unset()//销毁指定的变量 empty()// 检测…PHP知识大全 1. 变量如何定义如何检查变量是否定义如何删除一个变量怎样检测变量是否设置 $定义 isset()// 检测变量是否设置 defined// 检测常量是否设置unset()//销毁指定的变量 empty()// 检测变量是否为空 2. 什么是可变变量 一个变量的变量名可以动态的设置和使用。 $a ‘hello’ , $$a ‘world’, KaTeX parse error: Expected }, got EOF at end of input: {a}hello world 3. 变量赋值方式有哪几种 1直接赋值 2变量间赋值 3引用赋值 4. 引用和拷贝有什么区别 拷贝是将原来的变量内容复制下来拷贝后的变量与原来的变量使用各自的内存互不干扰。 引用相当于是变量的别名其实就是用不同的名字访问同一个变量内容。当改变其中一个变量的值时另一个也跟着发生变化。 5. php中变量有哪些基本数据类型 php支持8种原始数据类型包括 四种标量类型布尔型boolean整型interger浮点型float/double , 字符串string 两种复合类型(数组array 对象object) 两种特殊类型资源resourceNULL 6. 其它类型转换为boolean类型时哪些被认为是false 布尔值false整型值0 浮点型值0.0 空白字符串 字符串’0’, 空数组特殊数据类型NULL, 没有设定的变量。 empty()函数在哪些情况下返回true 布尔值false整型值0 浮点型值0.0 空白字符串 字符串’0’, array()空数组特殊数据类型NULL, 没有任何属性的对象没有赋值的变量。 7. 如果定义了一个变量$a ,但是没有赋初始值 那么$a0吗 $afalse吗 $a吗 $aNULL吗 $aNULL吗 答echo什么都没有 , var_dumpNULL empty($b)true吗———————————— echo1 , var_dumpbool(true) 此时如果输出$a是多少——————— echo什么都没有 , var_dumpNULL 如果输出$a又是多少————————— echo1 , var_dumpint(1) 8. 字符串怎么转成整数有几种方法怎么实现 强制类型转换: (整型)字符串变量名; 直接转换settype(字符串变量,整型); intval(字符串变量); 9. 标量数据和数组的最大区别是什么 一个标量只能存放一个数据而数组可以存放多个数据。 10. 常量如何定义? 如何检测一个常量是否被定义常量的值只能是哪些数据类型 define()//定义常量 , defined()//检查常量是否定义 常量的值只能是标量类型的数据。 11. 常量分为系统内置常量和自定义常量。请说出最常见的几个系统内置常量 __FILE__ , __LINE__ , PHP_OS , PHP_VERSION 12. 如果定义了两个相同的常量前者和后者哪个起作用 前者起作用因为常量一旦定义就不能被重新定义或者取消定义。 13. 常量和变量有哪些区别 1常量前没有$符号 2常量只能通过define()定义而不能通过赋值语句定义 3常量可以在任何地方定义和访问而变量有全局和局部之分 4常量一旦定义就不能被重新定义或者取消定义而变量而通过赋值方式重新定义 5常量的值只能是标量数据而变量的数据库类型有8种原始数据类型。 14. PHP中常用的几个预定义的全局数组变量是哪些 有9大预定义的内置数组变量 $_POST, $_GET, $_REQUEST, $_SESSION, $_COOKIE, _ F I L E S \_FILES _FILES_SERVER, $_ENV, $GLOBALS 15. 在实际开发中常量最常用于哪些地方 1连接数据库的信息定义成常量如数据库服务器的用户名、密码、数据库名、主机名 2将站点的部分路径定义成常量如web绝对路径smarty的安装路径model、view或者controller的文件夹路径 3网站的公共信息如网站名称网站关键词等信息。 16. 函数的优越性有哪些 提高程序的可维护性 提高软件的可靠性 提高程序的可重用性 提高程序的开发效率 17. 如何定义一个函数函数名区分大小写吗 1使用 function 关键字 2函数命名规则和变量一样以字母或者下划线开头而不能以数字开头 3函数名不区分大小写 4函数名不可以使用已经声明过的或者系统自建的函数名称。 18. 什么是变量的能见度 或者 说是变量作用域 就是变量在程序中的可作用范围。根据变量的能见度变量分为局部变量和全局变量。 19. 什么是局部变量和全局变量函数内是否可以直接调用全局变量 局部变量是函数内部定义的变量其作用域是所在的函数。如果函数外还有一个跟局部变量名字一样的变量程序会认为它们两个是完全不同的两个变量。当退出函数的时候其中的局部变量就同时被清除。全局变量是定义在所有函数以外的变量其作用域是整个php文件但是在用户自定义的函数内部是无法使用的。如果一定要在用户自定义的函数内部使用全局变量那么就需要使用global关键字声明。也就是说如果在函数内的变量前加上golbal来修饰那么函数内部就可以访问到这个全局变量不仅可以利用这个全局变量进行运算而且可以对这个全局变量进行重新赋值。全局变量还可以使用 $GLOBALS[‘var’] 来调用。 21. 什么是静态变量 如果一个函数内定义的变量前使用关键字static来声明那么该变量就是静态变量。 一般函数内的变量在函数调用结束后其存储的数据将被清除所占的内存空间也被释放。而使用静态变量时该变量会在函数第一次被调用时被初始化初始化后该变量也不会被清除当再次调用该函数时这个静态变量不再被初始化而能保存上次函数执行完后的值。可以说静态变量在所有对该函数的调用之间共享。 22. php中函数传递参数的方式有哪些两者有什么区别 按值传递和按地址传递或按引用传递 (1)按值传递: 待传递的变量与传递给函数之后的变量是存储在不同的空间中。所以函数体内对 该变量值做的修改不影响原本的变量值。(2)按地址传递: 使用 符号表明该参数是以地址的方式传递值。并不会将主程序中的指定数值或目标变量传递给函数而是把该数值或变量的内存储存区块地址导入函数之中所以函数体内的该变量和主程序中的该变量在内存中是同一个。函数体做的修改直接影响到函数体外部的该变量的值。 23. 什么是递归函数如何进行递归调用 递归函数其实就是调用自身的函数但是必须满足以下两个条件 1在每一次调用自身时必须是更接近于最终结果 2必须有一个确定的递归终止条件不会造成死循环。 举例说明 在实际工作中往往会在遍历文件夹的时候使用。 如果有个例子是希望获取到目录windows下所有的文件那么先遍历windows目录如果发现其中还有文件夹那么就会调用自身继续往下寻找依次类推 直到遍历到再也没有文件夹为止这也就是意味着遍历出来了所有的文件。 24. 判断一个函数是否存在 function_exists( string $function_name ) 如果存在返回true, 不存在则返回 false。 25. func()和func()之间有什么区别 第二个函数调用失败不会报错第一个会报错 26. include()和require()函数的用法和区别是什么include_once()和require_once()呢 include和require出现错误后的错误级别不一样 include_once()和require_once()在加载之前要判断是否已经导入 27. 说出前置和后置的区别 前置是先将变量增加1然后在将值赋值给原来的变量 后置是先返回变量的当前值然后再将变量的当前值增加1. 28. 字符串运算符“.”与算术运算符“”有什么区别 当“a”“b”之间使用.时认为是连字符。如果两者间是的时候php会认为是一次运算。 1如果号两边的字符串是数字组成的那么会将字符串自动转为整型 2如果号两边是纯粹的字母那么会输出0 3如果号两边的字符串是以数字开头的那么会截取字符串开头的数字然后进行运算。 29. 什么是三目或三元运算符 根据一个表达式的结果在另两个表达式中选择一个。 例如: ($atrue) ? ‘good’:‘bad’; 30. 控制流程语句有哪些 1三种程序结构 顺序结构、分支结构、循环结构 2分支 if/esle/esleif/ switch/case/default 3: switch 需要注意的 case子句中的常量可以是整型、字符串型常量、 或者常量表达式不允许是变量。 同一个switch子句中case的值不能相同否则只能取到首次出现case中的值。 4: 循环 for while do…while do…while 后面必须加入分号结尾。 while 和 do…while 的区别 5break 和 continue 的区别。 break可以终止循环。 continue没有break强大只能终止本次循环而进入到下一次循环中。 31. 数组的概念是什么数组根据索引分为哪两种如何区分数组的赋值方式有哪两种 数组是一个可以存储一组或一系列数值的变量复合型变量 索引数组索引值为数字以0开始和关联数组以字符串作为索引值 数组的赋值方式有哪两种 数组的声明方式主要有两种。 1.通过array()函数声明数组 可以通过keyvalue的方式分别定义索引和值也可以不定义数组的索引下标只给出数组的元素值。 2.直接为数组元素赋值,不需要调用array()函数。例如 $arr[0] 1; $arr[1] 2; 特别注意 数组的下标如果是等价于整数的字符串值但不能以0开头则会被当作整数对待。 例如 $array[3] 与 $array[‘3’] 引用的是相同的一个元素而 $array[‘03’] 引用的则就是另外的一个元素了。 32.数组如何遍历 ①for循环 ②foreach循环 这是最常用的遍历方式。用法如下foreach($arr as k e y key keyvalue){} ③list each 和while 配合起来循环 33. foeach数组的时候指针是如何指向的list()/each()/while()循环数组的时候指针如何指向的呢 当foreach开始执行的时候数组内部的指针会自动指向第一个单元。因为foreach所操作的是指定数组的拷贝而不是该数组本身。而each()一个数组后数组指针将停留在数组中的下一个单元或者碰到数组结尾时停留在最后一个单元。如果要再次使用each()遍历数组必须要使用reset(). reset()将数组的内部指针倒回到第一个单元并返回第一个数组单元的值。 34. 如何计算数组长度或者说计算数组中所有元素的个数字符串怎么取长度 count() – 计算数组中的元素个数。 可以使用count(数组名)或者count(数组名,1),如果有第二个参数并且是数字1则表示递归统计数组元素的个数。如果第二个参数是数字0则等同于只有一个参数的count()函数。 sizeof() – count() 的别名count — 计算数组中的单元数目或对象中的属性个数 字符串strlen()— 获取字符串长度 mb_strlen()— Get string length35. 数组中相关的常用函数有哪些 1 count --sizeof别名— 计算数组中的单元数目或对象中的属性个数 例如int count ( mixed $var [, int $mode ] ) $var 通常都是数组类型任何其它类型都只有一个单元。 $mode 默认值为0. 1为开启递归地对数组计数 2 in_array ( mixed $needle , array $haystack [, bool $strict ] ) — 检查数组中是否存在某个值。如果 needle 是字符串则比较是区分大小写的。如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。 3 array_merge(array $array1 [, array $array2 [, array $… ]] ) 将一个或多个数组的单元合并起来一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 特别注意如果输入的数组中有相同的字符串键名则该键名后面的值将覆盖前一个值。然而如果数组包含数字键名后面的值将不会覆盖原来的值而是附加到后面。 如果只给了一个数组并且该数组是数字索引的则键名会以连续方式重新索引 4 数组与字符串之间的转换 (1)explode ( string $separator , string $string [, int $limit ] ) 使用一个分隔字符来分隔一个字符串。 (2)implode ( string $glue , array $arr ) 使用一个连接符将数组中的每个单元连接为一个字符串。join 为 implode 的别名 5 sort(array $array [, int $sort_flags ]) — 对数组按照值排序当本函数结束时数组单元将被从最低到最高重新安排。 36. 数组合并函数array_merge()和数组加法运算$arr $arr2 的区别是什么 array_merge()-使用array_merge()如果是关联数组合并如果数组的键名相同那么后面的值将覆盖前者如果是数字索引数组合并则不覆盖而是后者附加到前者后面。“”-使用数组加法运算与array_merge()不同加法运算不管是关联数组还是数字索引数组都是将相同键名的的值舍弃也就是只保留首次出现该键名的元素后来的具有相同键名的元素都不会被加进来。 37. 字符串定义的时候单引号和双引号有什么区别 单引号加载速度比双引号加载速度快 38. echo(),print(),print_r()的区别 (1)echo 是语法Output one or more strings没有返回值 (2)print 是函数不能输出数组和对象Output a stringprint有返回值 (3)print_r 是函数可以输出数组。print_r是个比较有意思的函数可以输出stirng、int、float、 array、object等输出array时会用结构表示print_r输出成功时返回true而且print_r可以通过print_r($str,true)来使print_r不输出而返回print_r处理后的值。此外对于echo和print基本以使用echo居多因为其效率比print要高。 39. 按照功能分类说说都有哪些字符串处理函数这些函数的作用是什么 A. 字符串输出函数 (1)echo a , a, a,b,$c…; 是一个语言结构而不是一个真正的函数。 (2)print($a) 本函数输出字符串。若成功则返回 1失败返回 0 (3)print_r($a) (4)var_dump($a); 能输出类型、长度、值 B. 去除字符串首尾空格的函数 trim ltrim rtrim别名chop 使用第二个参数还可以去除指定的字符。 C. 转义字符串函数addslashes() D. 获取字符串长度的函数strlen() E. 截取字符串长度的的函数substr() F. 检索字符串函数 strstr() , strpos() G. 替换字符串函数str_replace() 40. 请给出以下问题的正确答案 1). a r r a r r a y ( ′ j a m e s ′ , ′ t o m ′ , ′ s y m f o n y ′ ) ; 请将 arr array(james, tom, symfony);请将 arrarray(′james′,′tom′,′symfony′);请将arr数组的值用’,’分割并合并成字符串输出 echo implode(‘,’,$arr); 2). s t r ‘ j a c k , j a m e s , t o m , s y m f o n y ’ ; 请将 str ‘jack,james,tom,symfony’; 请将 str‘jack,james,tom,symfony’;请将str用’,’分割并把分割后的值放到$arr数组中 a r r e x p l o d e ( ‘ , ’ , arr explode(‘,’, arrexplode(‘,’,str); 3). a r r a r r a y ( 3 , 7 , 2 , 1 , ’ d ’ , ’ a b c ’ ) ; 请将 arr array(3,7,2,1,’d’,’abc’); 请将 arrarray(3,7,2,1,’d’,’abc’);请将arr按照从大到小的顺序排序并保持其键值不变 arsort( a r r ) ; p r i n t r ( arr); print_r( arr);printr​(arr); 4).$mail “gaofei163.com”; 请将此邮箱的域(163.com)取出来并打印看最多能写出几种方法 echo strstr($mail,‘163’); echo substr($mail,7); a r r e x p l o d e ( , arr explode(, arrexplode(,mail); echo $arr[1]; 5). 如果有一个字符串该字符串是“123234345”。请问如何切割掉这个字符串最后一个逗号 6). 获取随机数的函数有哪几个mt_rand() 和 rand()哪个执行速度快 41.页面字符出现乱码怎么解决? 1.首先考虑当前文件是不是设置了字符集。查看是不是meta标签中写了charset如果是php页面还可以看看是不是 在header()函数中指定了charset 例如 header(“content-type:text/html;charsetutf-8”); 2.如果设置了字符集也就是charset那么判断当前文件保存的编码格式是否跟页面设置的字符集保持一致 两者必须保持统一 3.如果涉及到从数据库提取数据那么判断数据库查询时的字符集是否跟当前页面设置的字符集一致两者必须统一 例如mysql_query(“set names utf8”)。 42. 正则表达式是什么php中有哪些常用的跟正则相关的函数请写出一个email的正则中国手机号码和座机号码的正则表达式 正则表达式是用于描述字符排列模式的一种语法规则。正则表达式也叫做模式表达式。 网站开发中正则表达式最常用于表单提交信息前的客户端验证。 比如验证用户名是否输入正确密码输入是否符合要求email、手机号码等信息的输入是否合法 在php中正则表达式主要用于字符串的分割、匹配、查找和替换操作。 preg系列函数可以处理。具体有以下几个 string preg_quote ( string str [, string delimiter] ) 转义正则表达式字符 正则表达式的特殊字符包括. \\ * ? [ ^ ] $ ( ) { } ! | :。 preg_replace – 执行正则表达式的搜索和替换 mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] preg_replace_callback – 用回调函数执行正则表达式的搜索和替换 mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit] ) preg_split – 用正则表达式分割字符串 array preg_split ( string pattern, string subject [, int limit [, int flags]] ) 常用的正则表达式写法 中文/^[\u4E00-\u9FA5]$/ 手机号码/^(86)?0?1\d{10}$/ EMAIL /^[\w-][\w-.]?[\w-]\.{1}[A-Za-z]{2,5}$/ 密码安全级别中 /^(\d[A-Za-z]\w*|[A-Za-z]\d\w*)$/ 密码安全级别高 /(\d[a-zA-Z~!#$%^(){}][\w~!#$%(){}]|[a-zA-Z~!# %^(){}\]\\d\[\\w~!# %^(){}])$/ 44. preg_replace()和 str_ireplace()两个函数在使用上有什么不同preg_split()和split()函数如何使用 preg_replace — 执行正则表达式的搜索和替换 str_ireplace — str_replace() 的忽略大小写版本 str_replace — 子字符串替换 preg_split — 用正则表达式分割字符串 split — 用正则表达式将字符串分割到数组中 45. 获取当前时间戳的函数主要有哪些用PHP打印出今天的时间格式是2010-12-10 22:21:21 用PHP打印出前一天的时间格式是2010-12-10 22:21:21如何把2010-12-25 10:30:25变成unix时间戳 echo date (“Y-m-d H:i:s” ,strtotime(‘-1,days’)); date(‘Y-m-d H:i:s’,time()); $unix_time strtotime(“2009-9-2 10:30:25”);//变成unix时间戳 echo date(“Y-m-d H:i:s”,$unix_time);//格式化为正常时间格式 在url中用get传值的时候若中文出现乱码应该用哪个函数对中文进行编码 用户在网站表单提交数据的时候为了防止脚本攻击比如用户输入php端接收数据的时候应该如何处理 使用urlencode()对中文进行编码使用urldecode()来解码。 使用htmlspecialchars($_POST[‘title’])来过滤表单传参就可以避免脚本攻击。 48. 说说mysql_fetch_row() 和mysql_fetch_assoc()和mysql_fetch_array之间有什么区别 第一个是返回结果集中的一行作为索引数组第二个是返回关联数组而第三个既可以返回索引数组也可以返回关联数组取决于它的第二个参数 MYSQL_BOTH MYSQL_NUM MYSQL_ASSOC 默认为MYSQL_BOTH $sql ”select * from table1”; r e s u l t m y s q l q u e r y ( result mysql_query( resultmysqlq​uery(sql); mysql_fetch_array($result, MYSQL_NUM); 49. 请说出目前学过的返回是资源的函数 答 fopen打开文件 imagecreatefromjpeg(png gif) — 从 JPEG 文件新建一图像imagecreatetruecolor — 新建一个真彩色图像imagecopymerge — 拷贝并合并图像的一部分imagecopyresized — 拷贝部分图像并调整大小mysql_connect — 打开一个到 MySQL 服务器的连接mysql_query();只有这执行select的时候成功才返回资源失败返回FALSE 50. 打开、关闭文件分别是什么函数 文件读写是什么函数删除文件是哪个函数 判断一个文件是否存在是哪个函数新建目录是哪个函数 51. 文件上传需要注意哪些细节怎么把文件保存到指定目录怎么避免上传文件重名问题 1.首现要在php.ini中开启文件上传 2.在php.ini中有一个允许上传的最大值默认是2MB。必要的时候可以更改 3.上传表单一定要记住在form标签中写上enctype“multipart/form-data” 4. 提交方式 method 必须是 post 5. 设定 type“file” 的表单控件 6.要注意上传文件的大小MAX_FILE_SIZE、文件类型是否符合要求上传后存放的路径是否存在。 可以通过上传的文件名获取到文件后缀然后使用时间戳文件后缀的方式为文件重新命名这样就避免了重名。可以自己设置上传文件的保存目录与文件名拼凑形成一个文件路径使用move_uploaded_file()就可以完成将文件保存到指定目录。 52. $_FILES是几维数组第一维和第二维的索引下标分别是什么批量上传文件的时候需要注意什么 二维数组。第一维是上传控件的name二维下标分别为name/type/tmp_name/size/error. 53. header()函数主要的功能有哪些使用过程中注意什么 答 header()发送http头信息-header(“content-type:text/html; charsetutf-8”);-------------------//当前页面输出内容是html编码为utf-8格式 - -header(“content-type:image/png gif jpeg”);----------------------------------//当前页面输出内容的格式是图片 -header(“refresh:5;urlhttp://www.1004javag.com/five/string.php”);–//页面5秒后要跳转到新网址 -header(“location:http://1004javag.com/five/string.php”);-----------//页面重定向 54. 文件下载的时候如果使用header()函数? 答header(“content-type: application/octet-stream;charsetUTF-8”); //在这里加utf-8和在上面定义有什么区别、 header(accept-ranges: bytes);header(accept-length: .filesize($filedir.$filename));header(content-disposition: attachment; filename.$filedir.$filename);55. 什么是ajaxajax的原理是什么ajax的核心技术是什么ajax的优缺点是什么 ajax是asynchronous javascript and xml的缩写是javascript、xml、css、DOM等多个技术的组合。 $是jQuery的别名. 页面中用户的请求通过ajax引擎异步地与服务器进行通信服务器将请求的结果返回给这个ajax引擎 最后由这个ajax引擎来决定将返回的数据显示到页面中的指定位置。Ajax最终实现了在一个页面的指定位置可以加载另一个页面所有的输出内容。 这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。所以ajax技术实现了一个静态网页在不刷新整个页面的情况下与服务器通信 减少了用户等待时间同时也从而降低了网络流量增强了客户体验的友好程度。 Ajax的优点是 1. 减轻了服务器端负担将一部分以前由服务器负担的工作转移到客户端执行利用客户端闲置的资源进行处理 2. 在只局部刷新的情况下更新页面增加了页面反应速度使用户体验更友好。 Ajax的缺点是不利于seo推广优化因为搜索引擎无法直接访问到ajax请求的内容。 ajax的核心技术是XMLHttpRequest它是javascript中的一个对象。 56. jquery是什么jquery简化ajax后的方法有哪些 jQuery是Javascript的一种框架。 . g e t ( ) , .get(), .get(),.post(), . a j a x ( ) 。 .ajax()。 .ajax()。是jQuery对象的别名。 代码如下 $.post(异步访问的url地址 , {‘参数名’ : 参数值} , function(msg){ $(“#result”).html(msg); }); $.get(异步访问的url地址 , {‘参数名’ : 参数值} , function(msg){ $(“#result”).html(msg); }); $.ajax({ type: “post”, url: loadUrl, cache:false, data: “参数名” 参数值, success: function(msg) { $(“#result”).html(msg); } }); 57. 什么是会话控制 简单地说会话控制就是跟踪和识别用户信息的机制。会话控制的思想就是能够在网站中跟踪一个变量通过这个变量系统能识别出相应的用户信息根据这个用户信息可以得知用户权限从而展示给用户适合于其相应权限的页面内容。目前最主要的会话跟踪方式有cookiesession。 58. 会话跟踪的基本步骤 1)访问与当前请求相关的会话对象 2)查找与会话相关的信息 3)存储会话信息 4)废弃会话数据 59. 使用cookie的注意事项有哪些 1 setcookie()之前不可以有任何页面输出就是空格空白行也不可以 2 setcookie()后在当前页面调用$_COOKIE[‘cookiename’]不会有输出必须刷新或到下一个页面才可以看到cookie值 3 不同的浏览器对cookie处理不同客户端可以禁用cookie浏览器也可以闲置cookie的数量一个浏览器能创建的cookie数量最多300个并且每个不可以超过4kb 每个web站点能设置的cookie总数不能超过20个。 4 cookie是保存在客户端的用户禁用了cookie那么setcookie就不会起作用了。所以不可以过度依赖cookie。 60. 使用session的时候通过什么来表示当前用户从而与其他用户进行区分 sessionid通过session_id()函数可以取得当前的session_id。 61. session和cookie的使用步骤分别是什么什么是sesssion和cookie的生命周期session和cookie的区别是什么 cookie是保存在客户端机器的对于未设置过期时间的cookiecookie值会保存在机器的内存中只要关闭浏览器则cookie自动消失。如果设置了cookie的过期时间那么浏览器会把cookie以文本文件的形式保存到硬盘中当再次打开浏览器时cookie值依然有效。 session是把用户需要存储的信息保存在服务器端。每个用户的session信息就像是键值对一样存储在服务器端其中的键就是sessionid而值就是用户需要存储信息。服务器就是通过sessionid来区分存储的session信息是哪个用户的。 两者最大的区别就是session存储在服务器端而cookie是在客户端。session安全性更高而cookie安全性弱。 session在web开发中具有非常重要的份量。它可以将用户正确登录后的信息记录到服务器的内存中当用户以此身份访问网站的管理后台时无需再次登录即可得到身份确认。而没有正确登录的用户则不分配session空间即便输入了管理后台的访问地址也不能看到页面内容。通过session确定了用户对页面的操作权限。 使用session的步骤 1. 启动session使用session_start()函数来启动。 2. 注册会话直接给$_SESSION数组添加元素即可。 3. 使用会话判断session是否为空或者是否已经注册如果已经存在则像普通数组使用即可。 4. 删除会话 1.可以使用unset删除单个session 2.使用$_SESSIONarray()的方式一次注销所有的会话变量 3.使用session_destroy()函数来彻底销毁session。 cookie怎么使用 1. 记录用户访问的部分信息 2. 在页面间传递变量 3. 将所查看的internet页存储在cookies临时文件夹中可以提高以后的浏览速度。 创建cookiesetcookie(string cookiename , string value , int expire); 读取cookie通过超级全局数组$_COOKIE来读取浏览器端的cookie的值。 删除cookie有两种方法 1.手工删除方法 右击浏览器属性可以看到删除cookies执行操作即可将所有cookie文件删除。 2.setcookie()方法 跟设置cookie的方法一样不过此时将cookie的值设置为空有效时间为0或小于当前时间戳。 62. 如何设置一个cookie的名字为username,值为jack并且让此cookie一周后失效 一个浏览器最多可以产生多少个cookie每个cookie文件最大不能超过多少 setcookie(‘username’,’jack’,time()7*24*3600); 最多可以产生20个cookie每个最多不超过4K 63. 设置或读取session之前需要做什么 可以直接在php.ini中开启session.auto_start 1或者在页面头部用session_start(); 开启sessionsession_start()前面不能有任何输出包括空行。 64. 在实际开发中session在哪些场合使用 session用来存储用户登录信息和用在跨页面传值。 1常用在用户登录成功后将用户登录信息赋值给session 2用在验证码图片生成当随机码生成后赋值给session。 65. 注销session会话的形式有几种 unset() $_SESSIONarray(); session_destroy(); 66. 什么是OOP?什么是类和对象什么是类属性 OOP(object oriented programming)即面向对象编程其中两个最重要的概念就是类和对象。 世间万物都具有自身的属性和方法通过这些属性和方法可以区分出不同的物质。 属性和方法的集合就形成了类类是面向对象编程的核心和基础 通过类就将零散的用于实现某个功能的代码有效地管理起来了。 类只是具备了某些功能和属性的抽象模型而实际应用中需要一个一个实体也就是需要对类进行实例化类在实例化之后就是对象。★类是对象的抽象概念对象是类的实例化。 对象是一个高级的数组数组是一个最原始的对象同样的对象也可以遍历 OOP具有三大特点 1\. 封装性也称为信息隐藏就是将一个类的使用和实现分开只保留部分接口和方法与外部联系或者说只公开了一些供开发人员使用的方法。于是开发人员只需要关注这个类如何使用而不用去关心其具体的实现过程这样就能实现MVC分工合作也能有效避免程序间相互依赖实现代码模块间松藕合。2. 继承性就是子类自动继承其父级类中的属性和方法并可以可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。 php只支持单继承也就是说一个子类只能有一个父类。 3. 多态性子类继承了来自父级类中的属性和方法并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果这种技术就是多态性。多态性增强了软件的灵活性。 OOP的优点1、代码重用性高省代码 2、使程序的可维护性高扩展性 3、灵活性 67. 常用的属性的访问修饰符有哪些分别代表什么含义 privateprotectedpublic。 类外public ,var 子类中publicprotected ,var 本类中privateprotectedpublic ,var 如果不使用这三个关键词也可以使用var关键字。但是var不可以跟权限修饰词一起使用。var定义的变量,子类中可以访问到类外也可以访问到相当于public 类前面只能加finalabstract 属性前面必须有访问修饰符privateprotectedpublicvar 方法前面staticfinalprivateprotectedpublic abstract 68. $this和self、parent这三个关键词分别代表什么在哪些场合下使用 $this 当前对象 self 当前类 parent 当前类的父类 $this在当前类中使用,使用-调用属性和方法。 self也在当前类中使用不过需要使用::调用。 parent在类中使用。 69.类中如何定义常量、如何类中调用常量、如何在类外调用常量。 类中的常量也就是成员常量常量就是不会改变的量是一个恒值。 定义常量使用关键字const. 例如const PI 3.1415326; 无论是类内还是类外常量的访问和变量是不一样的常量不需要实例化对象 访问常量的格式都是类名加作用域操作符号双冒号来调用。 即类名 :: 类常量名; 70. 作用域操作符::如何使用都在哪些场合下使用 调用类常量 调用静态方法 71. 什么是魔术方法常用的魔术方法有哪几个 以__开头的系统自定义的方法。 __construct() __destruct() __autoload() __call() __tostring() 72. 什么是构造方法和析构方法 构造方法就是在实例化一个对象的同时自动执行的成员方法作用就是初始化对象。 php5之前一个跟类名完全相同的方法是构造方法php5之后魔术方法__construct()就是构造方法。如果类中没有定义构造方法那么php会自动生成一个这个自动生成的构造方法没有任何参数没有任何操作。 构造方法的格式如下 function __construct(){} 或者function 类名(){} 构造方法可以没有参数也可以有多个参数。 析构方法的作用和构造方法正好相反是对象被销毁时被自动调用的作用是释放内存。 析构方法的定义方法为__destruct(); 因为php具有垃圾回收机制能自动清除不再使用的对象释放内存一般情况下可以不手动创建析构方法。 73. __autoload()方法的工作原理是什么 使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。 当程序执行到实例化某个类的时候如果在实例化前没有引入这个类文件那么就自动执行__autoload()函数。这个函数会根据实例化的类的名称来查找这个类文件的路径当判断这个类文件路径下确实存在这个类文件后就执行include或者require来载入该类然后程序继续执行如果这个路径下不存在该文件时. 就提示错误。使用自动载入的魔术函数可以不必要写很多个include或者require函数。 74. 什么是抽象类和接口抽象类和接口有什么不同和相似的地方 抽象类是一种不能被实例化的类只能作为其他类的父类来使用。 抽象类是通过关键字 abstract 来声明的。 抽象类与普通类相似都包含成员变量和成员方法两者的区别在于抽象类中至少要包含一个抽象方法 抽象方法没有方法体该方法天生就是要被子类重写的。 抽象方法的格式为abstract function abstractMethod(); 因为php中只支持单继承如果想实现多重继承就要使用接口。也就是说子类可以实现多个接口。接口类是通过interface关键字来声明的接口类中的成员变量和方法都是public的方法可以不写关键字public接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。抽象类和接口实现的功能十分相似最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。子类继承抽象类使用extends子类实现接口使用implements。 抽象类至少有一个抽象方法吗 答如果一个类声明成抽象类里面可以没有抽象方法 如果一个类中有抽象方法这个类必须是抽象类75. __call的参数有几个类型是什么意义是什么 魔术方法__call()的作用是当程序调用一个不存在或不可见的成员方法时php会先调用__call()方法将那个不存在的方法的方法名和参数都存储下来。 __call()包含两个参数 第一个参数是那个不存在的方法的方法名是个字符串类型 第二个参数是那个不存在的方法的所有参数是个数组类型。 本人认为__call()方法的意义更多在于调试可以定位到错误。同时可以捕捉异常如果某个方法不存在则执行其它可替代方法。 76. smarty模板技术的用途是什么 为了php与html分开美工和程序员各司其职互不干扰。 77. smarty配置主要有哪几项 1. 引入smarty.class.php; 2. 实例化smarty对象 3. 重新修改默认的模板路径 4. 重新修改默认的编译后文件的路径 5. 重新修改默认的配置文件的路径 6. 重新修改默认的cache的路径。 7. 可以设置是否开启cache。 8. 可以设置左侧和右侧定界符。 78. smarty在使用过程中需要注意哪些细节 Smarty是基于MVC概念的一种模板引擎它将一个页面程序分成了两部分来实现即视图层和控制层也就是说smarty技术将用户UI与php代码分离开。这样程序员和美工各司其职互不干扰。 smarty运用过程中要注意以下几个问题 1.正确配置smarty。主要要实例化smarty对象配置smarty模板文件的路径 2.php页面中使用assign赋值 和 display显示页面 3.smarty模板文件中不允许出现php代码段所有的注释变量函数都要包含在定界符内。 A.{} B. foreach C. if else D. include E. literal 79. MVC的概念是什么各层主要做什么工作 MVC即模型-视图-控制器是一种软件设计模式或者说编程思想。 M指Model模型层V是View视图层显示层或者用户界面C是Controller控制器层。 使用mvc的目的是实现M和V分离从而使得一个程序可以轻松使用不同的用户界面。 在网站开发中 模型层一般负责对数据库表信息进行增删改查 视图层负责显示页面内容 控制器层在M和V之间起到调节作用控制器层决定调用哪个model类的哪个方法 执行完毕后由控制器层决定将结果assign到哪个view层。 81. java语言中方法重写和重载分别代表什么意思准确说php支持方法的重载吗很多参考书中提到的php重载实际上该如何正确理解 答 php不支持方法的重载很多书里提到的PHP‘重载’应该是‘重写’ 82. final关键字能定义类中的成员属性吗 答不能类的成员属性只能有public private protected var 来定义 83. final关键字定义的类能够被继承吗 答final定义的类不能被继承 84. 说说static关键字的使用场合static能用在class前吗 static可以跟publicprotectedprivate一起使用吗构造方法可以是static的吗答 static可以在属性和方法前面使用调用static属性或者方法时只要将类载入就可用不用实例化 static不能用在class的前面 static可以跟publicprotectedprivate一起使用在方法的前面 ▲构造方法不能是static 85. 接口可以实例化吗抽象类能实例化吗 答接口和抽象类都不能被实例化 86. class前面能加访问修饰符吗如果能加只能是哪几个访问修饰符可以是权限访问修饰符publicprotectedprivate吗 答class前面可以加finalstatic ★class前面不能加publicprotectedprivate 87. 类中属性前可以不加访问修饰符吗成员变量前的修饰符只能是publicprotectedprivate吗还可以是哪几个 答类中的属性必须加修饰符除了那3个以外还可以加var 88. 如果echo一个数组页面输出什么echo一个对象呢print一个数组或者对象呢 答页面只能输出“Array”echo一个对象会出现“Catchable fatal error: Object of class t2 could not be converted to string in G:\php2\t2.php on line 33” print一个数组时也只是输出“Array”print一个对象出现“Catchable fatal error: Object of class t2 could not be converted to string in G:\\php2\\t2.php ”▲print和echo是一样的 89. __tostring()魔术方法在什么时候被自动执行 __tostring()魔术方法必须要return返回值吗 当echo或者print一个对象时就是自动触发。而且__tostring()必须要返回一个值 90. 什么是抽象方法 答在方法前面有abstract而且方法没有方法体连“{ }”也不能有 91. 如果一个类中有一个方法是抽象方法而这个类没有定义成抽象类会报错吗 答会,“Fatal error: Class t2 contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (t2::ee) in” 92. 如果一个类是抽象类而类中的方法都是非抽象的方法会报错吗 答不会报错如果一个类是抽象类其中可以没有抽象方法但是一个类中有个方法是抽象方法那么这个类一定是一个抽象类 94. final 关键字的应用应注意的问题 使用final关键字定义的类禁止继承。 使用final关键字定义的方法禁止重写。 95. 如果一个类既要继承一个父类又要实现多个接口该如何写 书写格式例如 class MaleHuman extends Human implements Animal,Life { … } 96. 什么是单点入口呢 所谓单点入口就是整个应用程序只有一个入口所有的实现都通过这个入口来转发比如说在上面我们就使用index.php作为程序的单点入口当然这个是可以由你自己任意控制的。单点入口有几大好处 第一、一些系统全局处理的变量类方法都可以在这里进行处理。比如说你要对数据进行初步的过滤你要模拟session处理你要定义一些全局变量甚至你要注册一些对象或者变量到注册器里面第二、程序的架构更加清晰明了。97. PHP提供了2套正则表达式函数库,分别是哪两套【 (1) PCRE Perl兼容正则表达式 preg_ 为前缀 (2) POSIX 便携式的操作系统接口 ereg_ 为前缀 98. 正则表达式的组成 由原子(普通字符如英文字符)、元字符(有特殊功用的字符)模式修正字符一个正则表达式中至少包含一个原子99. 不常用魔术方法的触发时机 __isset() __unset()的触发时机 __sleep()、 __wakeup() 在对对象进行串行化的时候调用 如果序列化对象的时候不写__sleep()方法则所有的成员属性都会被序列化而定义了__sleep()方法则只序列化指定数组中的变量。因此如果有非常大的对象而并不需要完全储存下来时此函数也很有用。 使用 __sleep 的目的是关闭对象可能具有的任何数据库连接提交等待中的数据或进行类似的清除任务。此外如果有非常大的对象而并不需要完全储存下来时此函数也很有用。 使用 __wakeup 的目的是重建在序列化中可能丢失的任何数据库连接以及处理其它重新初始化的任务。 101.常见框架 thinkPHP yii ZendFramework CakePhp sy 102. 常用魔术方法的触发时机 1__autoload() 当程序实例化某个类而该类没有在当前文件中被引入。此时会触发执行__autoload()。程序希望通过该方法自动引入这个类文件。该方法有一个参数即就是那个忘记引入的类的名称。__autoload()方法的工作原理是什么当程序执行到实例化某个类的时候如果在实例化前没有引入这个类文件那么就自动执行__autoload()函数。这个函数会根据实例化的类的名称来查找这个类文件的路径当判断这个类文件路径下确实存在这个类文件后就执行include或者require来载入该类然后程序继续执行如果这个路径下不存在该文件时就提示错误。使用自动载入的魔术函数可以不必要写很多个include或者require函数。 2__construct() 这个是魔术构造方法。构造方法是实例化对象的时候自动执行的方法作用就是初始化对象。该方法可以没有参数也可以有多个参数。如果有参数那么new这个对象的时候要记得写上相应的参数。在php5以前没有魔术构造方法普通构造方法是一个跟类名同名的方法来实现构造的。如果一个类中既写了魔术构造方法又定义了普通构造方法。那么php5以上版本中魔术方法起作用普通构造方法不起作用。反之在php5以前版本中不认识魔术构造方法只是把该方法当做普通的方法。 3__destruct() 这个是魔术析构方法。析构方法的作用和构造方法正好相反是对象被销毁时被自动调用的作用是释放内存。析构方法没有参数。 4__call() 当程序调用一个不存在或不可见的成员方法时自动触发执行__call()。它有两个参数分别是未访问到的方法名称和方法的参数。而第二个参数是数组类型。 5__get() 当程序调用一个未定义或不可见的成员属性时自动触发执行__get()。它有一个参数表示要调用的属性的名称。 6__set()当程序试图写入一个不存在或不可见的成员属性时PHP就会自动执行__set()。它包含两个参数分别表示属性名称和属性值。 7__tostring() 当程序使用echo或print输出对象时会自动调用该方法。目的是希望通过该方法将对象转化为字符串再输出。__tostring() 无参数但是该方法必须有返回值。 8__clone() 当程序clone一个对象的时候能触发__clone()方法程序希望通过这个魔术方法实现不仅仅单纯地克隆对象还需要克隆出来的对象拥有原来对象的所有属性和方法。 103. MVC的概念是什么 MVC即模型-视图-控制器是80年代发明的一种软件设计模式或者说编程思想。 M指模型层V是指视图层显示层或者用户界面C是指控制层。 使用mvc的目的是实现M和V分离从而使得一个程序可以轻松使用不同的用户界面。 C存在的目的则是在M和V之间起到调节作用确保M和V的同步一旦M改变V应该能同步更新。 将M和V分离就可以做到同一个网页在不同节日到来的时候能显示不同的页面风格这只需要提前制作多个视图层模板页面 而无需更改M层程序。 MVC做到了编程中的分工合作代码的可重用性得到最大化体现程序逻辑更加清晰而富有条理便于后期维护管理。 104、 访问权限修饰符有哪几种对比解释 答1、public 表示公共的在本类中和子类中以及类外可以对其调用 2、protected表示受保护的可以在本类中和子类中调用 3、private表示私有的只能在本类中调用 4、var效果等同于public 105、 Class关键词前可以有哪些修饰词 a) Final修饰表示该类是最终的无法继承 b) Abstract修饰表示该类是抽象类 106、 作用域操作符在那些场合下使用 答作用于操作符的使用场合 a) 本类中 i. self::类常量 ii. self::静态属性 iii. self::方法() parent::方法() b) 子类中 i. parent::类常量 ii. parent::静态属性public或者protected iii. parent::方法()public或者protected c) 类外 i. 类名::类常量 ii. 类名::静态属性public iii. 类名::静态方法public 107、 $thisself, parent分别代表什么哪些场合下使用 答$this代表的是当前对象 self代表的是当前的类 parent代表的是当前类的父类 使用场合 t h i s 只能使用在当前类中通过 this只能使用在当前类中通过 this只能使用在当前类中通过this-可以调用当前类中的属性和方法 self只能在当前类中使用通过作用域操作符::访问当前类中的类常量、当前类中的静态属性、当前类中的方法 parent只能使用在有父类的当前类中通过作用域操作符::访问父类中的类常量、父类中的静态属性、父类中的方法。 108、 说明是接口、抽象类二者有何相同和不同的地方 1、接口是帮助php实现功能意义上的多继承的用interface来声明其方法没有方法体使用implemens关键词来实现接口。 接口中只能包含抽象方法和类常量不可以包含成员属性。 2、抽象类是一种不能被实例化的类只能作父类用abstract class来定义抽象类和普通类可以没有区别类中可以包含成员属性、类常量、方法。 子类得用extends来继承而且只能是单继承。 两者相同点是都不可以被实例化都是需要被继承才可以使用。 两者的最大区别是接口可以实现多继承而抽象类只能是单继承。 接口中不能包含成员属性而抽象类中可以有成员属性。 接口中的抽象方法必须是public或者无访问修饰词接口中的抽象方法不能用abstract来修饰。 抽象类中的方法可以是普通方法也可以是抽象方法如果是抽象方法一定需要使用abstract来修饰。 109、 解释PHP中单例模式 又叫做单态模式、单元素模式、singleton pattern。单例模式指在PHP的应用程序的范围内只对指定的类创建一个实例。使用单例模式的类称为单例类。在php中单例类必须要有一个私有的构造方法还要有一个私有的魔术克隆方法该方法体中为空和一个私有的静态的成员属性 i n s t a n c e . 私有构造方法防止除自身以外的类来实例化它。私有的方法体为空的克隆方法防止该类被克隆。 _instance.私有构造方法防止除自身以外的类来实例化它。私有的方法体为空的克隆方法防止该类被克隆。 i​nstance.私有构造方法防止除自身以外的类来实例化它。私有的方法体为空的克隆方法防止该类被克隆。_instance用来存储被自身实例化后的对象。还必须要有一个公共的静态的方法getInstance。该方法返回已经存储了实例对象的$_instance。 单例一个类至始至终只能实例化一个对象这样的类就是单例类 单例类的优点① 节省空间 ② 节省资源 实现单例类的四个要点①私有的构造函数②私有的__clone的方法③私有的静态属性属性有以保存类的实例④公共的静态方法来实例化对象 无限级分类 ①数据库设计region_id(自增ID) region_name(地区名称) parent-id(上级地区id) region_path(全路径)②程序设计全路径的作用a根据全路径顺序取数据 b用作信息层级显示 110、 什么是SQL注入 SQL注入攻击是黑客对数据库进行攻击的常用手段之一。一部分程序员在编写代码的时候 没有对用户输入数据的合法性进行判断注入者可以在表单中输入一段数据库查询代码并提交 程序将提交的信息拼凑生成一个完整sql语句服务器被欺骗而执行该条恶意的SQL命令。注入者根据程序返回的结果 成功获取一些敏感数据甚至控制整个服务器这就是SQL注入。 111、 如何防止SQL注入 要对提交的信息进行过滤对单引号进行转义。 首先可以在php.ini中设置让所有的单引号在提交后都进行转义。或者使用addslashes(). 112、 FCKEditor自动过滤的解决办法 如果您需要编辑模板页默认的FCK设置是会去掉标签而且会给你加上 标签的如果需要保留的话只要更改下设置可以了。 在fckconfig.js里面有FCKConfig.FullPage false ; 改为FCKConfig.FullPage true; 如果想去掉自动添加 的代码就可以在这里设置 默认是 FCKConfig.EnterMode ‘p’ ; // p | div | br FCKConfig.ShiftEnterMode ‘br’ ; // p | div | br 改成 FCKConfig.EnterMode ‘br’ ; // p | div | br FCKConfig.ShiftEnterMode ‘p’ ; // p | div | br 113、 R E Q U E S T 、 _REQUEST、 R​EQUEST、_GET、 P O S T 、 _POST、 P​OST、_COOKIE 的关系和区别 1.关系 R E Q U E S T 包含了 _REQUEST包含了 R​EQUEST包含了_GET、 P O S T 、 _POST、 P​OST、_COOKIE等的所有内容是它们的集合体。 2.通过$_REQUEST获取变量值PHP页面因为不确定它是哪种传值方式 因此会根据php.ini中的配置来接收值。 php.ini里可以设置variables_order “GPC”。其含义是GET,POST,COOKIE. 所以PHP页面会先从 G E T 中获取再从 _GET中获取再从 G​ET中获取再从_POST中获取然后从$_COOKIE中获取。 新获得的值会覆盖之前获取到的值。 因此从表现形式上看 R E Q U E S T 最后是获取 _REQUEST最后是获取 R​EQUEST最后是获取_COOKIE中的值如果$_COOKIE中没有值 会获取 P O S T 中的值如果 _POST中的值如果 P​OST中的值如果_POST没有获取到 就去$_GET中获取。 如果 G E T 中也没有该值那么 _GET中也没有该值那么 G​ET中也没有该值那么_REQUEST就返回null。 114、 什么是多条件查询复合查询如何实现多条件查询 如何实现万能查询呢查询的时候要填写查询条件这些条件会通过表单进行提交。 首先需要检查提交的条件是否为空。如果不为空就认为这个值是要被当作条件 我们就可以使用字符串连接的方式来组合一个sql查询语句。 当执行后获取查询结果。 文件上传需要注意哪些细节怎么把文件保存到指定目录怎么避免上传文件重名问题 1). 首现要在php.ini中开启文件上传 2). 在php.ini中有一个允许上传的最大值默认是2MB。必要的时候可以更改 3). 上传表单一定要记住在form标签中写上enctype“multipart/form-data” 4). 提交方式 method 必须是 post 5). 设定 type“file” 的表单控件并且必须具有name属性值 6). 为了上传成功必须保证上传文件的大小是否超标、文件类型是否符合要求上传后存放的路径是否存在 7). 表单提交到接收页面接收页面使用 F I L E S 来接收上传的文件。 _FILES来接收上传的文件。 F​ILES来接收上传的文件。_FILES是个多维数组。第一维下标是上传控件的name二维下标分别为name/type/tmp_name/size/error。分别代表文件名、文件类型、上传到临时目录下的临时文件名、文件大小、是否有错误。如果是批量上传那么二维下标就是数组而并非是字符串。 8). 文件上传后是被放置在服务器端临时路径下需要使用move_uploaded_file ()函数才可以将上传后的文件保存到指定目录。 9). 为了避免上传文件重名可以通过上传的文件名获取到文件后缀然后使用时间戳文件后缀的方式为文件重新命名。 116. 使用GD2库创建图像的步骤 1). 创建一个画布imagecreate(); 2). 设置画布背景颜色使用RGB设置颜色imagecolorallocate(); 3). 设置文字颜色imagecolorallocate(); 4). 在画布上书写文字imagestring(); 5). 以 JPEG 格式将图像输出到浏览器或文件:【根据图片格式不同函数还可以是imagepng()、imagegif()等】 imagejpeg(); 6). 清除图像资源imagedestroy(); 117. GD2库生成缩略图的步骤是什么 1). 读取希望生成缩略图的源图像创建图像对象【根据图片格式不同函数也相应不同】 $src_image imagecreatefromjpeg(); 2). 获取原图像的宽度和高度 s r c W , srcW, srcW,srcH根据缩放比例计算出新图像的宽度和高度 d s t W 、 dstW、 dstW、dstH 3). 创建一个真色彩的图像对象宽度和高度设置成刚才计算出的宽度和高度 d s t i m a g e i m a g e c r e a t e t r u e c o l o r ( dst_image imagecreatetruecolor( dsti​mageimagecreatetruecolor(dstW,$dstH); 4). 拷贝图像并调整大小: imagecopyresized(); 5). 将图像输出:【根据图片格式不同函数也相应不同】 imagejpeg(); 6). 清除图像资源(将源图像资源和目标图像资源都清除) imagedestroy(); 118. GD2库给图片增加水印如何做 1. 添加简单的文本水印 利用imagestring()函数就可以在图片上写文本水印。 2. 增加一个图形水印 1). 读取希望增加水印的源图片创建图像对象【根据图片格式不同函数也相应不同】 $image imagecreatefromjpeg(); 2). 创建一个水印图片的图像对象 $watermark imagecreatefrompng(); 3). 拷贝并合并图像 imagecopymerge(); 4). 将图像输出:【根据图片格式不同函数也相应不同】 imagejpeg(); 5). 清除图像资源(将源图像资源和水印图像资源都清除) imagedestroy(); 119. 什么是事务什么是回滚事务的作用是什么 事务就是组合起来的几个独立的sql操作。如果其中一项失败那么就让这几个组合起来的sql操作都回退到未执行状态。这就是事务的回滚。mysql中MyISAM存储引擎的表不支持事务只有InnoDB 存储引擎的表才支持事务为了让事务正常执行就需要让参与事务的所有数据表都设置成innoDB类型。事务被包装在了 BEGIN 和 COMMIT 语句之间。在没有使用 COMMIT 语句的情况下对数据库的操作不是永久的一旦运行了 ROLLBACK就会被回退。只有执行了COMMIT数据表中的信息才被改动。事务的目的就是为了保证数据的完整性。 120. 模拟SESSION机制实现数据库存放会话数据有什么作用【备用】 如果使用默认的SESSION机制大家都知道默认的SESSION_ID是存放在COOKIE中用户的身份是靠SESSION_ID来识别的而COOKIE文件是存放在用户浏览器的客户端这样就会带来一个问题当用户在办公室选择一些商品到购物车在准备下订单付款的时候用户选择了支付宝在线的支付方式恰巧办公室的电脑上面没有安装支付宝的数字证书而在用户家里的电脑安装过数字证书所以呢用户就需要回家去支付。但是回家登录商城之后发现购物车中精心挑选的商品都不存在了。这是为什么呢?问题就在家里电脑上的并没有存放SESSION_ID的cookie文件因而就无法正确的读取服务器上对应session文件中的数据所以无法将原来的选择的商品息读取过来。这样的购物车功能给用户的用户体验式非常糟糕的所以我们就需要采取模拟SESSION机制使用数据库来存放会话数据。 什么是无限极分类 要实现无限极分类数据库建表是关键。 表结构中至少需要三个字段如果想避免递归循环那么需要四个字段。 1. id 当前数据的唯一标识 2. typename 类型名称 3. parentid 当前类型的上一层父类型的id 4. path 其中存储当前类型的id和它所有父级类型的id。 这些id之间采用“-”隔开。 5. 当通过以下sql语句就可以实现,相同顶级类下的信息都在一起集中显示。 select * from 表名 where 条件 order by path; 无限极分类的原理是什么 要实现无限极分类数据库表结构是关键。 表结构中至少需要三个字段如果想避免递归循环那么需要四个字段。 1. id 当前数据的唯一标识 2. typename 类型名称 3. parentid 当前类型的上一层父类型的id 4. path 其中存储当前类型的id和它所有父级类型的id。 这些id之间采用“-”隔开。 5. 当通过以下sql语句就可以实现,相同顶级类下的信息都在一起集中显示。 select * from 表名 where 条件 order by path; 122. 分页原理是什么 数据分页需要以下几个条件 1. 参与分页的总条数 【$msg_count】 该值通过数据库查询可以获取到; 2. 每页显示的条数【$pagesize】 这个数值由自己定义; 3. 当前页的页码数 【$page】该数值通过地址栏传递和接收 4. 可以通过以上资料计算出总页数 【$pagecount】 此处需要借助ceil(); 【 p a g e c o u n t c e i l ( pagecount ceil( pagecountceil(msg_count/$pagesize);】 5. 数据库查询借助sql语句中的【limit】来实现数据的变化 例如 select * from 表名 where 条件 limit $startnum , $pagesize; 而 s t a r t n u m ( startnum ( startnum(page-1)*$pagesize; 123、 如何在smarty模板语言中使用php代码 借助于两个smarty内建函数。 1. inluce_php 函数用于在模板中包含 php 脚本。例如 {include_php file“test.php”} 2. php 标签允许在模板中直接嵌入 php 脚本。例如 {php} echo “这个是php内建函数的作用”; {/php} 124、 请列出至少五个smarty中的变量调节符并说明功能 default 例如{$arr|default:’xxxx’} 默认变量调节器当变量为空时显示给定的默认值 truncate 例如{$articleTitle|truncate:10} 切割字符串长度为指定的长度 count_characters 例如{$articleTitle|count_characters} 获取字符串长度 strip_tags 例如 {$articleTitle|strip_tags} 去除字符串中的所有html标签 date_format 例如{$smarty.now|date_format(‘’)} 格式化时间戳。 125、 写程序实现如下功能 a.如何判断一个字符串中是否存在一个字符echo strstr(‘abcdefgcd’ , ‘cd’); echo strpos(‘ab0defgcd’ , ‘cd’); b.如何判断一个字符串中一个字符出现的次数echo substr_count(‘abcdefgcd’ , ‘cd’); c.如何去掉一个字符串的最后一个字符echo substr(‘abcdefgcd’ , 0 , -1); 126、 如何使用smarty的缓存、步骤什么叫单模板多缓存 如果给整个网站开启缓存那么 s m a r t y − c a c h i n g 1 , 此时缓存的时间为 s m a r t y . c l a s s . p h p 中默认的时间也就是 3600 秒。如果对每一个页面独立设置缓存那么 smarty-caching1,此时缓存的时间为smarty.class.php中默认的时间也就是3600秒。如果对每一个页面独立设置缓存那么 smarty−caching1,此时缓存的时间为smarty.class.php中默认的时间也就是3600秒。如果对每一个页面独立设置缓存那么smarty-caching2 缓存时间就会跟display的参数模板页相挂钩也就是可以实现对每个模板页设置不同的缓存时间。 用法例如 if(!$smarty-is_cached(‘index.html’)) { //此处可以执行数据库操作 $smarty-cache_lifetime 3600*6; } $smarty-display(‘index.html’); 对于例如新闻单条这样的页面新闻的模板都是一个如果开启缓存那么所有的新闻单页的缓存都是一个根本不会随着id的变化而变换内容。所以为了区分不同的页面缓存需要使用单模板多缓存技术。具体做法是以id作为display的第二个参数来实现。此外对于具有分页的列表页也必须在display中使用第二个参数可以使用新闻类型id和当前页面合并成第二个参数。 127、 写一个递归函数完成以下功能向函数中传一个多维数组对数组中所有的值做判断 如果值是’number’则设置该值为0(提示该题考的是递归的应用因为传入的数组不确定是多少维的所以需要递归判断) function recursive_array($arr) { if(is_array($arr)) { foreach($arr as k e y key keyvalue) { if(is_array($value)) { KaTeX parse error: Undefined control sequence: \[ at position 4: arr\̲[̲key] recursive_array($value); } else { if($value‘number’) { KaTeX parse error: Undefined control sequence: \[ at position 4: arr\̲[̲key] ‘0’; } }}} return $arr; } 128、 使用jquery写一个全选的例子 //全选与取消全选 function selectAll(flag) { for(var i0; i$(“#fonds input”).size(); i) { $(“#fonds input”).get(i).checkedflag; }} //判断复选框已经被勾选了多少个 function checkFonds() { var count0; for(var i0; i$(“#fonds input”).size(); i) { if($(“#fonds input”).get(i).checkedtrue) { count; }} alert(count); } //利用后代选择器和get()来获取指定的控件 $(“div a”).get(2) 129、 请说明smarty中fetch方法的功能 Fetch方法可以获取到页面所有的内容并且赋值到一个变量中。 如果第四个参数为true则等同于display直接输出到浏览器中。 如果第四个参数为false则不输出。 Display方法就是第四个参数为true的fetch方法。 Display Fetch() echo() 130、 写出关于文件上传的相关函数 strrchr($filename , ‘.’); explode(‘.’ , $filename); end( a r r ) ; s t r r p o s ( arr); strrpos( arr);strrpos(filename , ‘.’); substr($filename , p o s 1 ) ; p a t h i n f o ( pos1); pathinfo( pos1);pathinfo(filename , PATHINFO_EXTENSION); date(‘YmdHis’) time() rand(); mt_rand() move_uploaded_file() 131、 如何将SESSION存放在数据库中,可以结合数据表设计说明. 默认情况下php.ini中session.save_handler files也就是session是以文件形 式存储的。 如果想更改为数据库或其它存储方式那么需要更改设置让 session.save_handler user。 除了在php.ini中配置外还可以在PHP页面中单独配置用 ini_set (session.save_handler, ‘user’)来设置session的存储方式设置为用户自定义存储方式。 设置好存储方式后需要使用session_set_save_handler()函数。 该函数是设置用户级别的session保存过程的函数。该函数有6个参数这6个参数其实是6个自定义函数的名称分别代表对session的开启关闭读写 销毁gc垃圾回收。 示例代码如下 function open () { } function close() { } function read () { } function write () {} function destroy () {} function gc () {} session_set_save_handler (“open”, “close”, “read”, “write”, “destroy”, “gc”); session_start(); 现在你就可以象往常一样地使用session了。 数据库结构如下 Session_id session_value ,expire_time , 分别存储sessionid的id和值以及失效时间。 132、 常用的正则表达式写法 中文/^[\u4E00-\u9FA5]$/ 手机号码/^(86)?0?1\d{10}$/ EMAIL /^[\w-][\w-.]?[\w-]\.{1}[A-Za-z]{2,5}$/ 密码安全级别中 /^(\d[A-Za-z]\w*|[A-Za-z]\d\w*)$/ 密码安全级别高 /(\d[a-zA-Z~!#$%^(){}][\w~!#$%(){}]|[a-zA-Z~!# %^(){}\]\\d\[\\w~!# %^(){}])$/ —————————————————————————— PHP初 —————————————————————————— order顺序 var(variables)变量 model典型 样式 模型 module模数模块组件 enctype SEO搜索引擎优化Search Engine Optimization Search搜索 Engine 引擎 Optimization最佳化最优化 mod_rewrite模块重写 CMS 内容管理系统(content manage system) electronic commerce(电子商务) gcgarbage collection垃圾回收 ---------------Apache与WAMP安装--------------- 1.wamp安装 apache 2.2版本 mysql5.067版本 php5.2版本 LAMP Linux下的安装 负责版本控制 SVN 一台机器能安装多个apache服务 但是只能安装一个MySQL服务 -------------PHP上------------- PHP: personal home page 个人家庭主页 94年产生的 5.2.6版本 ASP: active server page 93 JSP: java server page 类里面定义常量叫类常量 用const定义 类常量必须有初始值 define(‘’,‘’,‘false/true’)里有三个参数默认为false时区分大小写反之不区分大小写 在类里面叫做方法 在类外叫做函数 常量默认为大小写敏感。 ::作用域操作符 标量和非标量类型的区别标量只能存一个数据非标量能存多个数据 属性 变量名 类常量区分大小写 变量 类名 系统自带函数 自定义函数不区分大小写 当$_POST[‘user_name’]等没加‘’是会先当作常量来编译 3.函数 可变函数函数的名字是一个变量 可选参数参数有默认值 递归recursive函数体内有一个循环体自己调用自己但他跟死循环有区别死循环是没有尽头的 他是无限循环递归有尽头他最终会获得一个值 function pager $page $msg_count $pagesize $url“”{ }----》$url?即为可选参数 数组的合并 array_merge() $arr1$arr2两数组相加 只要是具有相同的下标则只保留首次出现的元素后者舍去 array_merge:索引数组会将后者的元素附加到前者后面若是关联数组相同下标后者覆盖前者 explode() 取数组最后一个元素 8.文件的操作 mkdir新建目录 rmdir删除目录 skandir输出指定路径下的文件或目录 fopen(资源)— 打开文件或者 URL fclose— 关闭一个已打开的文件 fgets — 一次读取一行 fgetc — 一次只读取一个字符 fgetss — 一次读取一行并过滤掉 HTML 标记 file_get_contents — 将整个文件读入一个字符串 fread-读取文件 file_put_contents— 将一个字符串写入文件 fwrite-写入文件 unlink-删除文件 pathinfo — 返回文件路径的信息 array_push — 将一个或多个单元压入数组的末尾入栈 array_unshift — 在数组开头插入一个或多个单元 9.其它函数 输出控制函数ob(output buffer) ob_flush 加密函数 md5 数学类函数abs绝对值,rand随机数,ceil取整,floor,mt_rand生成更好的随机数 转换函数explode 使用一个字符串分割另一个字符串implode 时间函数date(),strtotime (将字符串转换为时间戳) 处理地址栏 url_encode url_decode 10.乱码问题 ASCIIAmerican Standard Code for Information Interchange81年产生 ANSI 美国国家标准学会 American National Standards Institute utf-8-8代表一次传输8个字符可变字节编码中文3个字节utfUnicode转换格式UCS Transformation Format utf-16-16代表一次传输16个字符 GBK. 国家标准扩展码Guo-Biao Kuozhan90年产生双字节编码 GB2312 因为国际排行2312位81年产生 BIG5 unicode 国际编码可变字节编码 Latin_1 utf-8 bom ISO:国际标准化组织International Standardization Organization 11.数据库操作 数据库优化char查询速度快 varchar引擎myisammysql indexed sequential access method索引顺序访问方法 支持事务的引擎BDB innodb innodb是以inno开头的一家公司的商标 表类型就是表的存储引擎 dll:动态数据连接库 封装的类库 修饰符publicvarprotectedprivatestaticfinalabstract 访问权限修饰符publicprivateprotected public:类成员访问没有限制多有外部成员都可以访问protected:受保护的不能被类外部成员访问该类的直接子类可以访问可以实现对成员属性的读、写操作private:私有的只能类里边的成员自己访问类外部的成员都不能访问一个属性被修饰为私有的(private)那么这个属性在类的外部是不可以读取和修改的现在有一种方法 可以设置该属性既是私有的还可以被类的外部成员读取即__get()和__set()修饰class的修饰符finalabstract抽象 final被它修饰的类是不能被继承的 定义属性必须要加修饰符可以是public和var 定义方法时可以有修饰符public可以不写默认为public 如果父类中的方法被声明为final则子类无法覆盖该方法 如果一个类被声明为final则不能被继承。 final只能出现在class类和方法中 方法前可以有publicprivateprotectedstaticfinalabstract修饰。 继承性耦合性越低越好const修饰一定要有初始值 ( smarty的保留变量{KaTeX parse error: Expected EOF, got } at position 11: smarty.now}̲,{smarty.const},{KaTeX parse error: Expected EOF, got } at position 12: smarty.post}̲,{smarty.get},{KaTeX parse error: Expected EOF, got } at position 15: smarty.cookies}̲,{smarty.config},{KaTeX parse error: Expected EOF, got } at position 15: smarty.session}̲,){smarty.capture} 调用属性时如果前有 后边就不能有后有前不能有如 后边就不能有后有前不能有如 后边就不能有后有前不能有如this-abc self::$abc当用parent调用父类方法时将方法自动转化为静态的 多态性由继承 重写(覆盖)重新写一遍override重写造成的 php不支持重载重复载入php为弱变量语言overload重载 抽象一个类包含抽象方法就是抽象类抽象类中不一定有抽象方法 抽象类的定义abstract 接口里可以有抽象类还可以有类常量通过interface来定义一个接口 实现多个接口时接口中的方法不能有重名。 接口中定义的所有方法都必须是public这是接口的特性。 接口里的方法必须被重写 静态static 不能与构造方法共存static不能new对象构造方法可以new对象方法体中不能用$this 在php5以前的版本中当普通构造方法和__construct(魔术方法)共存在时它会调用普通构造方法它对__construct(魔术方法)是不识别的在php5以后的版本中当共存时他会先调用__construct(魔术方法)。析构方法是最后被执行的被自动调用的方法 单例单态singleton —————————————————————————— PHP中 —————————————————————————— 2.jQuery 包括javascript框架和prototype.js框架 选择器 1.基本选择器 ①、$(#result)jQuery(#result)document.getElementById(result)div idresult②、class选择器 $(‘.result’) ③、元素选择器$(‘div’) 2.子代选择器$(‘#myform input’) 3.后代选择器$(‘#myform input’) 4.组合选择器$(‘#myform span input’) 3.Ajax ajax的用处是用来异步js和xml 不仅可以获取xml数据还可获得hmtl和json数据 ajax的优点:1.提升用户的体验2.占用带宽小3.减小服务器的负载 ajax就是把B页面的内容显示到A页面的指定位置实现异步传输 $.ajax() 返回其创建的 XMLHttpRequest 对象。 $.ajax({ url:, data:, type:, datatype:, success:function(这个参数里存在被传回的页面的所有内容){} });$.post(‘请求地址’,‘传递参数’,‘回调函数’); $.get(‘请求地址’,‘传递参数’,‘回调函数’); post传值文件没有大小限制保密性好必须有form表单 get传值安全性不高有大小限制 当地址栏里有中文时用urlencode(编码 URL 字符串) urlencode — 编码 URL 字符串 urldecode(解码已编码的 URL 字符串) 4.会话控制 session:unset()和array() 是连同内存和session文件内容一起删除而session_destroy只是将文件删除cookie没有生命周期的叫会话cookie随着浏览器的关闭cookie消失 cookie有两种存在方式,一种是以文件形式存在另一种是保存在内存里 cookie里面只能存字符串 会话控制主要是为了跨页面传值 序列化是把其他的类型转换成字符串类型 5.smarty 代码重用(include,require,include_once,require_once) include require 比 require_once include_once 性能高 加载类文件用 require_once(最好) include_once 6.PDO dsn(data source name) //数据源 $dsn ‘mysql:host127.0.0.1;dbnamejava1008a’; die(‘到此结束’); 等同于 echo ‘到此结束’;die; ---------------------------------------------------------------------------------- 2.b/s与c/s简单比较区别: –a、运行环境不同(广域网、局域网) –b、安全级别不同(低/高) –c、用户群不同(全部用户/局部用户) –d、系统升级不同(无缝升级/整体升级) –e、用户开启不同(浏览器/特制软件) –f、软件界面特点不同(信息流/用户体验) 比如b/s就是网上的微博、博客;c/s就是在网吧打的网络游戏(奇迹、传奇等) 3.php是什么:运行在服务器端的脚本语言 –Hypertext Preprocessor –personal home page 4.php语言能做什么 –图形化用户界面程序 –服务器端运行脚本程序 3.php外部变量KaTeX parse error: Undefined control sequence: \[ at position 6: _POST\̲[̲\]、_GET[]; 特殊运算符 .是连接符 .是连接赋值 屏蔽错误信息 $linkmySQl_connect(主机用户名密码) 5.流程控制(顺序、选择、循环) ****************************************************************************** ****************************************************************************** 第三单元【字符串】 1.字符串的三种定义方式(单引号、双引号、定界符) ---单引号定义(转义\和\) ---双引号定义(转义\n \r \t \$ \\ \) ---定界符方法eof 2.函数部分 explode/implode substr()** str_replace/trim/ltrim/rtrim strstr(str, search)获得指定字符串最开始出现到最后的内容 strrchr(str, search)获得指定字符串最后出现到最后的内容 strpos(str, search)获得指定字符串最开始出现的位置 strrpos(str, search)获得指定字符串最后出现的位置 ucfirst(str)将字符串第一个字母大写 ucwords(str)将字符串的每个单词的第一个字母大写 strlen(str)获得字符串长度 strcmp(str1, str2)比较两个字符串大小, 返回负数表示 str1 小于 str2 返回正数表示 str1 大于 str2 返回零表示二字符串相同 urlencode(str)替换所有非字母数字的字符变为%后面跟两位16进制数空格变为号 urldecode(str)对已%##编码的URL进行解析还原 parse_url(str)解析完整的url转变为为数组 parse_str(str,out)解析请求字符串转变为数组 htmlspecialchars()转换html代码为实体代码 printf/sprintf %b %d %c %x %s %f %X – b 整数转成二进位。 – c 整数转成对应的 ASCII 字符。 – d 整数转成十进位。 – f 单倍精确度数字转成浮点数。 – o 整数转成八进位。 – s 转成字符串。 – x 整数转成小写十六进位。 – X 整数转成大写十六进位。 1.数组和栈的操作 array_push(目标数组字符串)将字符串压入数组的最后 array_pop(目标数组)将数组最后的元素弹出并返回 2.数组和队列的操作 array_unshift(目标数组,字符串)将字符串放到数组的开始位置 array_shift(目标数组)删除数组的第一个元素并返回 3.数组和指针的操作key() current() next() prev() reset() end() 4.预定义数组($_GET $_POST $_FILES $_COOKIE $_SESSION) ****************************************************************************** ****************************************************************************** 第六单元【其他常用函数】 date(format,[timestamp])//格式化时间信息并返回 time()//返回当前时间戳信息 mktime(hour,minute,second,month,day,year) mktime(小时分钟秒月天年)//取得一个日期的 Unix 时间戳 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 -echo max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7) -echo max(‘string’, array(2, 5, 7), 42); // array(2, 5, 7)数组和非数组比较数组总认为最大 mt_rand(65,94)//获得随机数 round()//四舍五入取整 flush()//输出准备区内容 urlencode(‘张三’)//返回字符串中除了-_.之外的所有非字母数字部分为%后接两位 16进制数空格转化为 urldecode()//对已经编码的部分反编码 var_dump()//输出变量的详细信息(八种数据类型数据都可以输出) chr(mt_rand(65,94))随机获得字母 ord(chr(mt_rand(65,94)))将字母转化为数字 basename(路径名)获得路径中文件名部分 strtolower转换小写 第七单元【php连接mysql】 *mysql_connect(主机用户名密码) 打开一个到 MySQL 服务器的连接 *mysql_select_db(数据库连接数据库资源) 选择 MySQL 数据库 *mysql_query(“set names utf8”);设定字符集 *mysql_close() 关闭 MySQL 链接 *mysql_query(语句) 发送并执行一条sql语句 mysql_fetch_row(结果资源)从结果集中取得一行结果(索引数组) mysql_fetch_assoc(结果资源)从结果集中取得一行结果(关联数组) *mysql_fetch_array(结果资源)从结果集中取得一行结果(索引/关联数组) mysql_fetch_object(结果资源)从结果集中取得一行结果(对象数组) mysql_errno()返回错误号码 *mysql_error()返回错误信息 *mysql_num_rows(结果资源)用于计算查询结果中所得行的数目 *mysql_affected_rows()获得受影响的结果数目 *mysql_insert_id()传回最后一次使用 INSERT 指令产生的自动增长 ID 值 mysql_result(结果集索引行字段)指定获取结果 mysql_free_result(结果资源)释放结果集 mysql_num_fields(结果资源)用于计算查询结果中所得列的数目 mysql_fetch_field(结果资源)从结果集中取得列的结果,以对象形式返回 mysql_pconnect()永久连接数据库 1.留言板建立数据库bbs建立两张表leave_word和back_word(留言表和回复表) leave_word: 字段 数据类型 id int 主键、自增 title varchar(20) 标题 content text 内容 itime datetime 添加时间 back_word: id int 主键、自增 leave_id int 外键(留言id) content text 内容 btime datetime 回复时间 4.删除留言对无效、无用的留言实现删除功能这时需要用get方式传递被删除留言id值 5.修改留言对需要修改get方式传递被删除留言id值再利用隐藏域方式传递给接收页面 6.留言详细显示功能有的留言内容比较多在明细页面不可能全部显示出来这时利用get方式传递留言id 7.在详细页面可以实现回复功能和回复留言展示步骤制作一个回复表单和接收数据页面 3.构造方法和析构方法构造函数实例化对象首先第一个需要做的事情就是构造函数。一个小孩出生到5岁之前所有的事情都是父母帮助做的包括起名字、穿衣服、吃饭等等。析构函数一个对象被使用完后需要做一些善后工作这些善后工作是不需要人为干预的例如资源释放、变量删除等。例如一个小狗死后主人非常爱惜它就把它埋在了家后园的一颗树下。小狗被埋这件事情是主人做的不是狗做的。这就是析构函数。3.类的重写子类和父类之间的事情就是说父类有的方法子类不但可以直接使用还可以在子类中重新定义具体内容例如有一个父亲会驾驶汽车那么他的儿子也会驾驶汽车但他的儿子可以不驾驶汽车而驾驶飞机这就是类方法的重写。D 1.final(最后的)关键字使用 该关键字修饰的类不能被继承该关键字修饰的方法不能被重写2.static(静态)关键字使用(类的内部、外部、子类)实例化对象在内存中的分配有讲到大的数据在内存被分配到堆空间里边。现在有一个例子有一个学生这个类里边有一个成员属性是国家标识该对象是属于哪个国家的比如美国、英国、德国等 这个类在实例化对象时候每个对象在内存中都会分配一个空间用于存放国家这个成员属性如果有100个对象那么在内容中会分配100个相应的空间。如果这个类的使用对象是在中国境内那么每个对象的国家属性就会是一样的即中国相应的在内存中会有100个空间存放100个相同的内容这会造成空间浪费其实到这里我们可以知道100个相同的内容用一个空间存放就可以反正都是一样的这就产生了静态化概念static。用static修饰的成员属性该属性就不是对象的而是类的。3.self和parent关键字使用在类的内部访问类中的成员(属性和方法)可以用$this该关键字泛指对象这是访问一般的类成员如果访问的成员是用static关键字修饰的就不能用$this了因为用static修饰的类成员是被类本身拥有不属于任何对象了这时候需要用self关键字修饰 self::成员在类的外部访问类本身拥有的成员可以这样 类名::成员属性。在子类中访问父类拥有的成员可以用parent关键字 parent::成员属性4.const(常量)关键字使用在php中可以定义常量类外部用define定义类内部用const定义。常量的拥有者是类本身类内部访问常量用 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的类文件在实例化对象时候才引入否则不动作 答案是有的这时候可以用魔术方法__autoload function __autoload($className){ include($className.‘.php’); } 8.子类继承父类时候成员修饰符限制子类的修饰级别大于父类。例如父类的修饰符是protected则子类修饰级别是protected或public。父类是public的子类也必须是public的1.抽象类在类里边定义的没有方法体的方法就是抽象方法有抽象方法的类被称为抽象类。抽象类不能实例化对象。所谓没有方法体就是方法在声明时候没有花括号和里边的内容。作用之处例如我有一个类动物里边有方法吃食(还可以有许多其他的方法)动物这个类可以有许多子类例如狗、鱼、鸟等这些子类有一个共性就是都有吃食这个方法 一般的解决方法是定义3个类里边都有吃食方法。这样实现没有问题的但是如果其中一个 类没有吃食方法这时候程序是不给报错的。我们现在要做的就是3个类中任何一个没有吃食方法 系统就要报错。这时候就需要用到抽象类了。 抽象类按照字面意思理解就是对3个类的进一步抽象。抽象出来吃食方法。抽象类技术特性a、抽象类不能实例化b、类的成员方法是抽象的则这个类也是抽象的c、抽象方法体内没有实现细节具体实现留给子类实现d、继承抽象类的子类必须实现父类的抽象类除非自己也是抽象类。2.接口插座实例当一个抽象类里边的全部方法都是抽象方法时候这个抽象类就是接口。接口技术特性a、interface声明b、全部接口方法是public的因此可以省略c、接口只定义方法没有具体方法实现d、实现类用implements实现接口全部接口方法都要实现e、接口可以多实现中间用逗号分开f、接口是对抽象类的抽象抽象类是对类的抽象类是对事物的抽象。g、接口不能实例化1、抽象类和接口有什么不同抽象类只能单继承接口可以多实现抽象类里面可以有抽象方法和普通方法而接口里只有抽象方法抽象类里面可以有自己的属性而接口里面只能有常量接口里面的方法必须是public的而抽象类不同2、抽象类和接口的相似之处抽象类里面的抽象方法在继承的时候必须都要重写接口里面的方法也必须都要实现。抽象类和接口都不能直接实例化抽象类需要继承(extends)接口需要实现(implements)。 抽象类和接口都体现了多态的特性。3.jquery jquery是js的封装包,里边有很多集成的函数可以让我们使用,jquery的宗旨就是写更少的代码实现更多的功能 使用的方法 1.引进jquery包 script typetext/javascript srcjquery-1.4.2.jsscript2.测试jquery是否加载成功 $(function(){ alert(“jquey加载成功”); }) 3.获取页面的元素 $(‘#div’);通过id获取页面元素 $(‘.div’);通过class获取页面元素 jquery中的事件 1.$(‘#mydiv’).click(function(){});鼠标点击事件【要写在onload事件里边】 2.$(‘#mydiv’).hover(function(){},function(){});鼠标移动到对象事件 3.$(‘#mydiv’).attr();获得对象属性信息 4.$(‘#mydiv’).attr(‘checked’);查看单复选框的选定情况 5.$(‘#mydiv’).css();获得对象的属性信息 6.$(‘#mydiv’).css(样式值)给对象赋予样式 7.$(‘#mydiv’).addClass(‘trb’);给元素class属性赋值trb 8.$(‘#mydiv’).removeClass(‘trb’);使元素失去class属性 9.$(‘#mydiv’).submit(function(){});提交事件 10.$(‘#mydiv’).keyup(function(){});键盘敲击事件 在项目中的使用表单的验证 * 什么是单一入口单点入口呢 所谓单一入口就是整个应用程序只有一个入口所有的实现都通过这个入口来转发比如说在上面我们就使用index.php作为程序的单点入口当然这个入口文件的名字是可以由自己任意定义的。 单点入口有几大好处 第一、一些系统全局变量都可以在这里定义。比如说你要对数据进行初步的过滤你要模拟session处理你要定义一些全局变量甚至你要注册一些对象或者变量到注册器里面第二、程序的架构更加清晰明了。完结篇传送门 PHP知识大全
http://www.zqtcl.cn/news/260941/

相关文章:

  • 河北石家庄特产做网站优化的
  • 做网站工资年新多少在广东番禺网页设计公司
  • 宝安专业手机网站设计公司王野天个人资料
  • 给网站做蜘蛛抓取赚钱
  • 康保网站制作高端网站制作服务
  • 网站建设的网站分析怎么写crm管理系统销售
  • 茂名做网站的公司大专学电子商务有用吗
  • qq空间做宣传网站如何做图片网站
  • 邯郸住房城乡建设厅网站建设银行网站钓鱼网站
  • 高密建网站龙门城乡规划建设局网站
  • 阿里云从哪里建设网站企业设计网站公司排名
  • 长春做网站推广的公司公司要做个网站吗
  • 天水 网站建设招聘个人网站建设的国外文献综述
  • 什么网站做推广最好建行网站用户名是什么
  • 网站建设和维护需要学的东西服务器学生
  • 电子工厂网站建设企业管理咨询报告
  • 敖汉旗网站建设网站建设班级通讯录
  • 把手机做网站服务器做网站商丘
  • 婚恋咨询网站运营做速卖通代码的网站
  • 网站建设流程有哪七步c语言做的网站有什么优缺点
  • 树在线网页制作网站邢台中北世纪城网站兼职
  • 备案网站建设方案模板怎么看网站域名
  • asp iis设置网站路径效果好网站建设哪家好
  • 河南做外贸网站的公司大连在哪个省的什么位置
  • 网站架构怎么做wordpress e-commerce themes
  • 哪些网站微信支付平台经营管理系统
  • 教育教学成果展示网站建设桂林网站开发公司
  • 唐山房产网站建设asp.net 网站压缩
  • 卫浴网站设计大型网站建设的必须条件
  • 肇庆制作企业网站seo网站建设课程