PHP程序员必须会的 45 个PHP 面试题
发布时间:2020-12-25 01:59:09 所属栏目:交互 来源:网络整理
导读:Q1: == 和 === 之间有什么区别? 话题:?PHP 困难: ? 如果是两个不同的类型,运算符? == ?则在两个不同的类型之间进行强制转换 === ?操作符执行’ 类型安全比较 ‘ 这意味着只有当两个操作数具有相同的类型和相同的值时,它才会返回 TRUE。 1 === 1: true1 ==
|
让我们命名一些:
Q41:<=>运算符有什么用途?主题:PHP 该
考虑: //Comparing Integers echo 1 <= > 1; //outputs 0 echo 3 <= > 4; //outputs -1 echo 4 <= > 3; //outputs 1 //String Comparison echo "x" <= > "x"; // 0 echo "x" <= > "y"; //-1 echo "y" <= > "x"; //1
Q42:PHP是否具有线程? 主题:PHP 标准php不提供任何多线程功能,但是有一个(实验性)扩展名实际上是- pthreads。第二个最好的办法是让一个脚本通过CLI执行另一个脚本,但这有点基本。根据您尝试执行的操作以及操作的复杂程度,这可能是,也可能不是。 Q43:PHP是单线程还是多线程?主题:PHP Q44:提供一些方法来模仿PHP中的多个构造函数主题:PHP 众所周知,您不能在PHP类中放置两个具有唯一参数签名的__construct函数,但我想这样做: class Student
{
protected $id;
protected $name;
// etc.
public function __construct($id){
$this->id = $id;
// other members are still uninitialised
}
public function __construct($row_from_database){
$this->id = $row_from_database->id;
$this->name = $row_from_database->name;
// etc.
}
}
用PHP实现此目的的最佳方法是什么? 我可能会做这样的事情: class Student
{
public function __construct() {
// allocate your stuff
}
public static function withID( $id ) {
$instance = new self();
$instance->loadByID( $id );
return $instance;
}
public static function withRow( array $row ) {
$instance = new self();
$instance->fill( $row );
return $instance;
}
protected function loadByID( $id ) {
// do query
$row = my_awesome_db_access_stuff( $id );
$this->fill( $row );
}
protected function fill( array $row ) {
// fill all properties from array
}
}
然后,如果我想要一个我知道ID的学生: $student = Student::withID( $id );
从技术上讲,您不是在构建多个构造函数,而只是在构建静态辅助方法,而是通过这种方式避免在构造函数中使用大量意大利面条式代码。 另一种方法是结合使用工厂风格和流利风格: class Student
{
protected $firstName;
protected $lastName;
// etc.
/**
* Constructor
*/
public function __construct() {
// allocate your stuff
}
/**
* Static constructor / factory
*/
public static function create() {
$instance = new self();
return $instance;
}
/**
* FirstName setter - fluent style
*/
public function setFirstName( $firstName) {
$this->firstName = $firstName;
return $this;
}
/**
* LastName setter - fluent style
*/
public function setLastName( $lastName) {
$this->lastName = $lastName;
return $this;
}
}
// create instance
$student= Student::create()->setFirstName("John")->setLastName("Doe");
Q45:如何在PHP中实现方法重载?主题:PHP 您不能重载PHP函数。函数签名仅基于它们的名称,并且不包括参数列表,因此不能有两个具有相同名称的函数。 但是,您可以声明一个可变参量,该可变参函数接受可变数量的参数。您将使用 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

