在面试PHP的时候万一遇到编程题怎么办?以下是小编精心为大师收拾整顿的PHP面试编程题及答案,但愿对大师有所帮忙!更多内容请存眷应届结业生网!
1. 用autoload$class 实现Lib目录下的类的自动加载并可以兼容子目录
$request->action = lcfirstimplodearray_map
'ucfirst',
explode'-', strtolower$request->action
;
------------------------------------------------------------
function __autoload$class
$cls = strtolowerstr_replace"_","/",$class;
iffile_exsitsLIB.$cls.'.php'
include_onceLIB.$cls.'.php';
else
die"not found $class class";
defined"LIB",'/data/wwwroot/www.xx.com/lib/';
$author = new Lib_Author;
-----------------------------------------------------------
function __authload$class
$cls = explode"_",$class;
if@is_dir$cls[1]
if@is_file$cls[2]
include_once"CON_PATH".$cls[1].'/'.$cls[2].".php";
else
dir'error';
else if@is_file$cls[1].".php"
include_once"CON_PATH".$cls[1].".php";
else
dir'error';
---------------------------------------
function __autoload$class
$cls = explode"_",$class;
$file = get_file$cls;
if$file=='error'
die'error';
include_once$file;
function get_file$dir
ifis_array$dir
foreach$dir as $k=>$v
$tmpdir .= $v.'/';
ifis_dir'CON_PATH'.$tmpdir
continue;
else ifis_file'CON_PATH'.$tmpdir.".php"
return 'CON_PATH'.$tmpdir.".php";
else
return 'error';
return 'error';
return 'error';
defined"CON_PATH","/data/wwwroot/www.xx.com/app/cntroller/";
$sb = new controller_sb;
------------------------------------
function __autoload_my_classes$classname
# ... your logic to include classes here
spl_autoload_register'__autoload_my_classes';
-----------------------------------------------------------
2. 用set_error_handle 去捕捉过错并输出, 级别本人定
set_error_handlecallback,level
function callbackint $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]]
function dealErrorHandler$errno,$errstr,$errfile,$errline
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_handlerdealErrorHandler;
trigger_error"notice", E_USER_NOTICE;
trigger_error"warning", E_USER_WARNING;
trigger_error"error", E_USER_ERROR;
3. 简述两种屏蔽php顺序的notice告诫的办法
初始化变量,文件入手下手设置过错级别大概点窜php.ini 设置error_reporting
set_error_handler 和 @按捺过错
1.在顺序中添加:error_reporting E_ALL & ~E_NOTICE;
2.大概点窜php.ini中的:error_reporting = E_ALL
改成:error_reporting = E_ALL & ~E_NOTICE
3.error_reporting0;大概点窜php.inidisplay_errors=Off
4. instanceof的感化, 常常在什么计划模式中使用
单例模式,但是其他的模式也会用到
5. 1023用二进制透露表现, 并简述较量争论过程
10-2
1023%2=1
511%2 =1
255%2 =1
127%2 =1
63%2 =1
31%2 =1
15%2 =1
7%2 =1
3%2 =1
1%2 =1
0 =0
-------------------------------------------
1023
2^9=
511
k=9
10 9 8 7 6 5 4 3 2 1
1 1 1 1 1 1 1 1 1 1
----------------------
1023 1
1023-1/2=511 1
511-1/2=255 1
255-1/2=127 1
127-1/2=63 1
63-1/2=31 1
31-1/2=15 1
15-1/2=7 1
7-1/2=3 1
3-1/2=1 1
-----------------------------------------------
2-10
只需用将二进制数的各个位上的数从最右边入手下手,最右边的.第一个数乘以二的零次方,第二个数乘以二的一次方,第三个数乘以二的二次方,依次类推可得第n个数乘以二的n-1次方,然后把失掉的成果相加便可
比方:110011=1*2^0+1*2^1+0*2^2+0*2^3+1*2^4+1*2^5=51
这也能够算是一个公式就是An*2^n-1 An透露表现二进制数最右边入手下手的第n个数,
将第一项第二项第三项不断到第n项用式子An*2^n-1 较量争论出来并加在一块儿便可
6. 有如下数据库, 用原生态mysql扩展去连接并查询user表的前十行
host: 192.168.0.254
port: 3306
user: one
pass: piece
database: db_user
table: user
$link = mysql_connect"192.168.0.254:3306","one","piece" or die'Could not connect: '.mysql_error;
mysql_select_db'db_user',$link;
$query = mysql_query"select * from user limit 10";
while$rs = mysql_fetch_array$query,MYSQL_ASSOC