Yahoo-PHP笔试试题

进修社 人气:1W

1. foo() 与 @foo() 有什么分别?

Yahoo-PHP笔试试题

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();

执行完毕,打开以下档案来查阅执行日誌:

dir

你也可以使用 pprofp 来格式化日誌。

详细的.资料可以参阅 。

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();

没有比这个更简单的了。