Yahoo-PHP笔试试题
1. foo() 与 @foo() 有什么分别?
2. 你如何替 PHP 的应用程式侦错?
3. 「===」是什么?试举一例「==」是真但「===」是错。
4. 你会如何定义一个没有成员函式或特性的类别 myclass?
5. 你如何产生一个 myclass 的物件?
以下是 Matt Wilkin 提供的解答:
1. foo() 与 @foo() 有什么分别?
foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。
很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。
2. 你如何替 PHP 的应用程式侦错?
我并不常这样做,我曾经试过很多不同的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工具。
PHP – Advanced PHP Debugger 或称 PHP – APD,第一步是执行以下的指令安装:
pear install apd
安装后在你的脚本的开头位置加入以下的语句开始进行侦错:
apd_set_pprof_trace();
执行完毕,打开以下档案来查阅执行日誌:
apd.dumpdir
你也可以使用 pprofp 来格式化日誌。
详细的.资料可以参阅 http://us.php.net/manual/en/ref.apd.php。
3. 「===」是什么?试举一个「==」是真但「===」是假的例子。
「===」是给既可以送回布尔值「假」,也可以送回一个不是布尔值但却可以赋与「假」值的函式,strpos() 和 strrpos() 便是其中两个例子。
问题的第二部份有点困难,想一个「==」是假,但是「===」是真的例子却很容易,相反的例子却很少。但我终于找到以下的例子:
1
2
3
4
5
6
7
8
if (strpos("abc", "a") == true)
{
// 这部分永不会被执行,因为 "a" 的位置是 0,换算成布尔值「假」
}
if (strpos("abc", "a") === true)
{
// 这部份会被执行,因为「===」保证函式 strpos() 的送回值不会换算成布尔值.
}
4. 你会如何定义一个没有成员函式或特性的类别 myclass?
1
2
3
class myclass
{
}
5. 你如何产生一个 myclass 的物件?
$obj = new myclass();
没有比这个更简单的了。
版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。
本文地址:https://www.gunzhua.com/jiuye/bishi/29285.html