1、北京语言大学网络教育学院PHP结课作业注意:本学期所布置的结课作业,请同学一律按照以下要求执行:1) 结课作业提交起止时间:2017年8月2日-9月11日。(届时平台自动关闭,逾期不予接收。)2) 结课作业课程均需通过“离线作业”栏目提交电子版,学院不收取纸介的结课作业,以纸介回寄的作业一律视为无效;3)截止日期前可多次提交,平台只保留最后一次提交的文档,阅卷时以最后一次提交的结课作业为准,截止日期过后将关闭平台,逾期不交或科目提交错误者,按0分处理;4) 提交文档要求:提交的文档格式为doc、rar,大小10M以内;5) 必须严格按照每门课程的答题要求完成作业,没有按照学院要求来做的结课作业
2、,将酌情扣分。一. 论述题(本大题共5小题,请任选其中两道题作答,每小题25分,总分50分)1、双引号和单引号的区别。答:双引号解释变量,单引号不解释变量双引号里插入单引号,其中单引号里如果有变量的话,变量解释双引号的变量名后面必须要有一个非数字、字母、下划线的特殊字符,或者用讲变量括起来,否则会将变量名后面的部分当做一个整体,引起语法错误双引号解释转义字符,单引号不解释转义字符,但是解释和能使单引号字符尽量使用单引号,单引号的效率比双引号要高(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断)4、语句include和require的区别是什么?为避免多次包含同
3、一文件,可以用什么语句代替他们?答:require-require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行 require include-include有返回值,而require没有(可能因为如此require的速度比include快) 注意:包含文件不存在或者语法错误的时候require是致命的,include不是1、PHP程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。2、PHP程序执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循
4、环中。3、require() :无条件包含,如果文件不存在,会报出一个fatal error.脚本停止执行4、include() : 有条件包含,如果文件不存在,会给出一个 warning,但脚本会继续执行5、推荐使用require_once()和include_once(),可以检测文件是否有重复包含。二. 编程题(本大题共4小题,请任选其中两道题作答,每小题25分,总分50分1、用autoload($class) 实现Lib目录下的类的自动加载并可以兼容子目录。答:$request-action = lcfirst(implode(array_map(ucfirst,explode(-,
5、strtolower($request-action);-function _autoload($class)$cls = strtolower(str_replace(_,/,$class);if(file_exsits(LIB.$cls.php)include_once(LIB.$cls.php);elsedie(not found $class class);defined(LIB,/data/wwwroot/$author = new Lib_Author();-function _authload($class)$cls = explode(_,$class);if(is_dir($
6、cls1)if(is_file($cls2)include_once(CON_PATH.$cls1./.$cls2.php);elsedir(error);else if(is_file($cls1.php)include_once(CON_PATH.$cls1.php);elsedir(error);-function _autoload($class)$cls = explode(_,$class);$file = get_file($cls);if($file=error)die(error);include_once($file);function get_file($dir)if(i
7、s_array($dir)foreach($dir as $k=$v)$tmpdir .= $v./;if(is_dir(CON_PATH.$tmpdir)continue();else if(is_file(CON_PATH.$tmpdir.php)return CON_PATH.$tmpdir.php;elsereturn error;return error;return error;defined(CON_PATH,/data/wwwroot/$sb = new controller_sb();-function _autoload_my_classes($classname)# .
8、your logic to include classes herespl_autoload_register(_autoload_my_classes);2、用set_error_handle 去捕获错误并输出, 级别自己定。答:set_error_handle(callback,level)function callback(int $errno , string $errstr , string $errfile , int $errline , array $errcontext )function dealErrorHandler($errno,$errstr,$errfile,$e
9、rrline)switch($errno)case E_USER_ERROR:echo error $errno $errstr fatal error on line $errline in file $errfile;break;case E_USER_WARNING:echo my warning $errno $errstr:break;case E_USER_NOTICE:echo my notice$errno $errstr;break;default:echo unkonwn error type :$errno $errstr;break;set_erro_handler(dealErrorHandler);trigger_error(notice, E_USER_NOTICE);trigger_error(warning, E_USER_WARNING);trigger_error(error, E_USER_ERROR);