Câu 2: Chọn phát biểu đúng đoạn lệnh thực hiện trong PHP5:A... Câu 3: Chọn phát biểu đúng đoạn lệnh thực hiện trong PHP5:A.. Câu 4: Chọn phát biểu đúng đoạn lệnh thực hiện trong PHP5:A..
Trang 1• GVHD: Dương Khai Phong
• Email: khaiphong@gmail.com
• Website: http://khaiphong.tk
http://course.uit.edu.vn
Trang 21/ Giới thiệu tổng quan Web
2/ Ngôn ngữ HTML và JavaScript
3/ Ngôn ngữ PHP căn bản
4/ Các đối tượng trong PHP
5/ PHP và hướng đối tượng
6/ PHP và cơ sở dữ liệu MySQL
7/ PHP và AJAX
8/ PHP và các hệ thống mã nguồn mở 9/ Triển khai ứng dụng PHP
Trang 3PHẦN 5:
Trang 41 Giới thiệu
2 Các vấn đề cơ bản hướng đối tượng trong PHP
3 Lớp abstract và lớp interfaces
4 Hàm include và require
Trang 5 OOP (Object Orient Programming) revolves around the concept
of grouping code and data together in logical units called
classes This process is usually referred to as encapsulation, or information hiding, since its goal is that of dividing an
application into separate entities whose internal components can
change without altering their external interfaces (ref: page 132
of ebook “phparchitects Zend PHP 5 Certification Study Guide”)
abstraction, encapsulation, polymorphism, and inheritance.
Trang 61 Declaring a Class Cú pháp khai báo lớp:
Ví dụ:
class <Tên_lớp>{
// Your code is here
… }
class foo {
const BAR = "Hello World"; }
echo foo::BAR;
Trang 71 Declaring a Class Cú pháp khai báo lớp kế thừa:
class a {
function test(){ echo "a::test called";}
function func(){echo "a::func called";}
}
class b extends a { function test(){echo "b::test called";}
}
class c extends b { function test(){parent::test();}
}
class d extends c { function test(){b::test();}
}
if ($obj instanceof MyClass) {
echo "\$obj is an instance of MyClass";
}
Trang 81 Declaring a Class
2 Instantiating an
Object
theo dạng tham chiếu
Ví dụ:
$myClassInstance = new myClass();
$myClassInstance = new myClass();
Trang 9// Access methods of class myClass
$obj = new myClass();
$obj -> myFunction();
Trang 10$obj = new myClass();
$obj->callMyFunction(123);
Trang 13The resource can be accessed from any scope.
The resource can only be accessed from within the class where it is defined and its descendants The resource can only be accessed from within the class where it is defined.
The resource is accessible from any scope, but cannot be overridden in descendant classes.
Trang 14function construct(){
var_dump(get_object_vars($this));
}}
class bar extends foo {function construct(){
var_dump(get_object_vars($this));
}}new foo();
new bar();
Trang 15class bar extends foo {function construct(){
var_dump(get_object_vars($this )); echo "<br>";
}}new foo();
new bar();
Trang 16class bar extends foo {function construct(){
var_dump(get_object_vars($this));
}}
new foo();
new bar();
Trang 17class bar extends foo {function construct(){
var_dump(get_object_vars($this));
}}
new foo();
new bar();
Trang 18function construct(){
var_dump(get_object_vars($this )); echo "<br>";
}}
new foo();
new baz();
Trang 19class foo {
static $bar = "bat";
static public function baz(){
echo "Hello World";
}}echo foo::$bar."<br>";
// output:
Hello world
Trang 21 Lớp trừu tượng không cho phép tạo instance (không thể tạo được các đối tượng thuộc lớp đó).
Trang 22b Lớp trừu tượng
abstract class DataStore_Adapter {
private $id;
abstract function insert();
abstract function update();
public function save(){
Trang 23 Lớp dẫn xuất có thể kế thừa từ nhiều lớp interface để bổ sung đầy đủ cách thức hoạt động của mình (đa kế thừa - Multiple inheritance).
Cú pháp khai báo lớp interface
Trang 24c Lớp interface
interface DataStore_Adapter {
public function insert();
public function update();
public function save();
public function newRecord($name = null);
}
class PDO_DataStore_Adapter implements DataStore_Adapter {
public function insert(){ // }
public function update(){ // }
public function save(){ // }
public function newRecord($name = null){ }
}
Trang 25 Khi file được chèn bằng lệnh require() có lỗi thì trình
biên dịch sẽ dừng lại, không dịch nữa và sẽ xuất hiện thông báo lỗi.
Khi file được chèn bằng lệnh include() có lỗi thì trình
biên dịch vẫn tiếp tục dịch cho đến hết, đồng thời cũng
xuất hiện warning để cảnh báo file đó bị lỗi.
Trang 26b Ví dụ
require_include.php không tồn tại như sau:
echo "Hello you";
?>
</body>
</html>
Trang 28ĐH CÔNG NGHỆ THÔNG TIN http://sites.google.com/site/khaiphong
28
Trang 30Câu 1: Cho biết các phần tử được chứa trong mảng $a->array (đoạn
lệnh thực hiện trong PHP5):
<?php
1 class my_class
2 {
3 var $my_value = array();
4 function my_class ($value) {
Trang 31Câu 2: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh xuất kết quả 123
B Đoạn lệnh xuất kết quả 456
C Đoạn lệnh sai ở dòng 7
D Đoạn lệnh sai ở dòng 10
Trang 32Câu 3: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh báo lỗi
B Đoạn lệnh xuất kết quả 10
C Đoạn lệnh xuất kết quả Null
D Đoạn lệnh không xuất kết quả nào hết
Trang 33Câu 4: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh xuất kết quả 5
B Đoạn lệnh xuất kết quả 10
C Đoạn lệnh xuất kết quả Null
D Đoạn lệnh không xuất kết quả nào hết
Trang 34Câu 5: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh xuất kết quả 1
B Đoạn lệnh xuất kết quả 2
C Đoạn lệnh báo lỗi do biến $myvar chưa khai báo
D Đoạn lệnh không xuất kết quả nào hết
Trang 35Câu 6: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
Trang 36Câu 7: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh xuất kết quả “15”và “15”
B Đoạn lệnh xuất kết quả “15”và một thông báo notice
C Đoạn lệnh sai ở dòng số 4
D Đoạn lệnh sai ở dòng số 9
Trang 37Câu 8: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
<?php
1 class myClass {
2 private $myNumber = NULL;
3 public function construct() {
Trang 38Câu 9: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
Trang 39Câu 10: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
B Đoạn lệnh xuất kết quả 2
C Đoạn lệnh xuất kết quả 3
D Đoạn lệnh xuất kết quả 123
Trang 40Câu 11: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh xuất kết quả 9
B Đoạn lệnh xuất kết quả null
C Đoạn lệnh sai ở dòng số 3 trong tập tin cMyMath.php
D Đoạn lệnh sai ở dòng số 3 trong tập tin Test_cMyMath.php
Trang 41Câu 12: Chọn phát biểu đúng thay cho từ key1 và key2 để đoạn lệnh
sau xuất ra kết quả là 9 (đoạn lệnh thực hiện trong PHP5):
A key1: public và key2: echo $obj->mysqrt(3);
B key1: để trống và key2: echo $obj->mysqrt(3);
C Cả A và B đều đúng
D Tất cả đều sai
Trang 42Câu 13: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh xuất kết quả “Hello”
B Đoạn lệnh xuất kết quả “Good bye”
C Đoạn lệnh không xuất kết quả nào hết
D Đoạn lệnh báo lỗi: Fatal error
Trang 43Câu 14: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh xuất kết quả “Hello” và báo lỗi Fatal Error
B Đoạn lệnh xuất kết quả “HelloHelloHello”
C Đoạn lệnh không xuất kết quả nào hết
D Đoạn lệnh báo lỗi: Fatal error
Trang 44Câu 15: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
A Đoạn lệnh xuất kết quả “Hello”
B Đoạn lệnh xuất kết quả “HelloHello”
C Đoạn lệnh báo lỗi: Fatal error
D Tất cả đều sai
Trang 45Câu 16: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
<?php
1 class Foo{
2 public $x;
3 public function Foo(){$this->x=1;}
4 public function Foo($val){$x=$val;}
5 }
6 $obj = new Foo(3);
7 echo $obj->x;
8 ?>
A Đoạn lệnh xuất kết quả 1
B Đoạn lệnh xuất kết quả 3
C Đoạn lệnh không xuất kết quả nào hết
D Đoạn lệnh báo lỗi: Fatal error
Trang 46Câu 17: Chọn phát biểu đúng thay cho từ key để đoạn lệnh sau xuất ra
kết quả là animal (đoạn lệnh thực hiện trong PHP5):
<?php
1 class Animal{
3 public function Animal(){$this->type="animal";}
4 function getDescription(){return $type;}
Trang 47Câu 18: Chọn phát biểu đúng thay cho từ key để đoạn lệnh sau xuất ra
kết quả là vehicle (đoạn lệnh thực hiện trong PHP5):
Trang 48Câu 19: Cho biết kết quả đoạn lệnh (đoạn lệnh thực hiện trong PHP5):
<?php
1 abstract class AbstractClass{
2 abstract protected function getValue();
3 public function printOut() {print $this->getValue() "\n";}
4 }
5 class ConcreteClass1 extends AbstractClass{
6 protected function getValue() {return "ConcreteClass1";}
7 }
8 class ConcreteClass2 extends AbstractClass{
9 public function getValue() {return "ConcreteClass2";}
10 }
11 $class1 = new ConcreteClass1; $class1->printOut();
12 $class2 = new ConcreteClass2; $class2->printOut();
?>
A ConcreteClass1 ConcreteClass2
B Đoạn lệnh báo lỗi dòng 3 vì trong lớp abstract chỉ chứa phương
thức abstract
C Đoạn lệnh báo lỗi dòng 3 vì trong lớp abstract phương thức
printOut() không được định nghĩa trước
D Tất cả đều sai
Trang 49Câu 20: Chọn phát biểu đúng (đoạn lệnh thực hiện trong PHP5):
<?php
1 abstract class newClass{
2 final public function construct(){echo 'You failed';}
3 }
4 class MyClass extends newClass{
5 public function construct(){echo 'Will this work?';}
6 public static function myFunc(){echo 'FooBar';}
7 }
8 $init = new MyClass();
?>
A Đoạn lệnh biên dịch bị lỗi ở dòng số 2
B Đoạn lệnh biên dịch bị lỗi ở dòng số 6
C Đoạn lệnh biên dịch thành công nhưng thực thi báo lỗi Fatal error
D Đoạn lệnh biên dịch thành công nhưng thực thi thông báo warning