Hướng dẫn dùng cour def trong PHP

Sự khác biệt cơ bản giữa const so với defineconst xác định các hằng số tại

$a = array['key1' => 'Foo Bar', 'key2' => null];

isset[$a['key1']]; // true
array_key_exists['key1', $a]; // true

isset[$a['key2']]; // false
array_key_exists['key2', $a]; // true
0 [thời điểm biên dịch], trong khi define xác định chúng tại runtime.

const FOO = 'BAR';
define['FOO', 'BAR'];

// but
if [...] {
   const FOO = 'BAR'; // Invalid
}
if [...] {
   define['FOO', 'BAR']; // Valid
}

Cũng cho đến PHP 5.3, const không thể được sử dụng trong phạm vi toàn cục [global scope]. Bạn chỉ có thể sử dụng const trong một lớp. const được sử dụng khi bạn muốn đặt một số loại tùy chọn hoặc cài đặt không đổi liên quan đến lớp đó. Hoặc có thể bạn muốn tạo một số loại

$a = array['key1' => 'Foo Bar', 'key2' => null];

isset[$a['key1']]; // true
array_key_exists['key1', $a]; // true

isset[$a['key2']]; // false
array_key_exists['key2', $a]; // true
3. Một ví dụ về cách sử dụng const tốt là loại bỏ các magic number.

Define có thể được sử dụng cho cùng một mục đích, nhưng nó chỉ có thể được sử dụng trong phạm vi toàn cục. Nó chỉ nên được sử dụng cho các cài đặt chung ảnh hưởng đến toàn bộ ứng dụng. Trừ khi bạn cần bất kỳ loại định nghĩa có điều kiện hoặc cụ thể nào, hãy sử dụng const thay vì

$a = array['key1' => 'Foo Bar', 'key2' => null];

isset[$a['key1']]; // true
array_key_exists['key1', $a]; // true

isset[$a['key2']]; // false
array_key_exists['key2', $a]; // true
6 - đơn giản là để dễ đọc!

Sự khác biệt giữa isset[] và array_key_exists[] là gì?

  • $a = array['key1' => 'Foo Bar', 'key2' => null];
    
    isset[$a['key1']]; // true
    array_key_exists['key1', $a]; // true
    
    isset[$a['key2']]; // false
    array_key_exists['key2', $a]; // true
    
    7 sẽ cho bạn biết nếu một key tồn tại trong một mảng và thông báo khi
    $a = array['key1' => 'Foo Bar', 'key2' => null];
    
    isset[$a['key1']]; // true
    array_key_exists['key1', $a]; // true
    
    isset[$a['key2']]; // false
    array_key_exists['key2', $a]; // true
    
    8 không tồn tại.
  • $a = array['key1' => 'Foo Bar', 'key2' => null];
    
    isset[$a['key1']]; // true
    array_key_exists['key1', $a]; // true
    
    isset[$a['key2']]; // false
    array_key_exists['key2', $a]; // true
    
    9 sẽ chỉ trả về true nếu
    $obj = [object] array['qualitypoint', 'technologies', 'India'];
    
    0 tồn tại và không
    $obj = [object] array['qualitypoint', 'technologies', 'India'];
    
    1.
    $a = array['key1' => 'Foo Bar', 'key2' => null];
    
    isset[$a['key1']]; // true
    array_key_exists['key1', $a]; // true
    
    isset[$a['key2']]; // false
    array_key_exists['key2', $a]; // true
    
    9 không thông báo khi
    $a = array['key1' => 'Foo Bar', 'key2' => null];
    
    isset[$a['key1']]; // true
    array_key_exists['key1', $a]; // true
    
    isset[$a['key2']]; // false
    array_key_exists['key2', $a]; // true
    
    8 không tồn tại.

$a = array['key1' => 'Foo Bar', 'key2' => null];

isset[$a['key1']]; // true
array_key_exists['key1', $a]; // true

isset[$a['key2']]; // false
array_key_exists['key2', $a]; // true

Sự khác biệt giữa var_dump[] và print_r[] là gì?

Hàm

$obj = [object] array['qualitypoint', 'technologies', 'India'];
4 hiển thị thông tin cấu trúc về các biến/biểu thức bao gồm kiểu và giá trị của nó. Mảng được khám phá [explore] theo cách đệ quy với các giá trị được thụt vào để hiển thị cấu trúc. Nó cũng cho biết giá trị mảng và thuộc tính đối tượng nào là tham chiếu.
$obj = [object] array['qualitypoint', 'technologies', 'India'];
5 hiển thị thông tin về một biến theo cách mà con người có thể đọc được, các giá trị mảng sẽ được trình bày ở định dạng hiển thị các key và element.

$obj = [object] array['qualitypoint', 'technologies', 'India'];

$obj = [object] array['qualitypoint', 'technologies', 'India'];
6 sẽ hiển thị đầu ra bên dưới trong màn hình:

object[stdClass]#1 [3] {
   [0]=> string[12] "qualitypoint"
   [1]=> string[12] "technologies"
   [2]=> string[5] "India"
}

Và,

$obj = [object] array['qualitypoint', 'technologies', 'India'];
7 sẽ hiển thị bên dưới kết quả đầu ra trong màn hình.

stdClass Object [
   [0] => qualitypoint
   [1] => technologies
   [2] => India
]

Làm thế nào bạn có thể kích hoạt báo cáo lỗi trong PHP?

  • Kiểm tra xem
    $obj = [object] array['qualitypoint', 'technologies', 'India'];
    
    8 có bằng
    $obj = [object] array['qualitypoint', 'technologies', 'India'];
    
    9 trong
    object[stdClass]#1 [3] {
       [0]=> string[12] "qualitypoint"
       [1]=> string[12] "technologies"
       [2]=> string[5] "India"
    }
    
    0 hay không hoặc khai báo
    object[stdClass]#1 [3] {
       [0]=> string[12] "qualitypoint"
       [1]=> string[12] "technologies"
       [2]=> string[5] "India"
    }
    
    1 trong tập lệnh của bạn.
  • Sau đó, bao gồm
    object[stdClass]#1 [3] {
       [0]=> string[12] "qualitypoint"
       [1]=> string[12] "technologies"
       [2]=> string[5] "India"
    }
    
    2 trong mã của bạn để hiển thị tất cả các loại thông báo lỗi trong quá trình thực thi tập lệnh.

Bạn có thể kế thừa một lớp được định nghĩa là Final không?

Không, bạn không thể kế thừa một lớp được định nghĩa là Final.

Một phương thức hoặc lớp được khai báo là Final ngăn chặn việc ghi đè lớp con hoặc phương thức.

Kể một số ví dụ thực tế khi bạn cần phải sử dụng \_\_destruct trong các lớp của mình?

Chúng ta biết rằng

object[stdClass]#1 [3] {
   [0]=> string[12] "qualitypoint"
   [1]=> string[12] "technologies"
   [2]=> string[5] "India"
}
3 được gọi khi đối tượng bị hủy. Về mặt logic, điều gì sẽ xảy ra nếu đối tượng bị hủy? Vâng, nó có nghĩa là nó không còn nữa. Vì vậy, nếu nó có các tài nguyên đang mở, bạn nên đóng các tài nguyên đó vì nó sẽ bị hủy hoặc tự dọn dẹp. Ngoài ra, bởi vì PHP sẽ đóng tài nguyên khi chấm dứt giùm bạn không có nghĩa là việc đóng chúng một cách rõ ràng khi bạn không cần nữa là điều tồi tệ.

Một số ví dụ thực tế là:

  • Đóng database
    object[stdClass]#1 [3] {
       [0]=> string[12] "qualitypoint"
       [1]=> string[12] "technologies"
       [2]=> string[5] "India"
    }
    
    4
  • Xóa các thư mục tạm thời
  • Dọn dẹp bộ nhớ đệm
  • Ghi các tin nhắn log trong hàng đợi vào
    object[stdClass]#1 [3] {
       [0]=> string[12] "qualitypoint"
       [1]=> string[12] "technologies"
       [2]=> string[5] "India"
    }
    
    5

Làm cách nào để có thể đặt thời gian thực thi vô hạn cho tập lệnh PHP?

object[stdClass]#1 [3] {
   [0]=> string[12] "qualitypoint"
   [1]=> string[12] "technologies"
   [2]=> string[5] "India"
}
6 được thêm vào đầu tập lệnh để đặt thời gian vô hạn cho thực thi để không xảy ra lỗi "maximum execution time exceeded" trong PHP. Chúng ta cũng có thể thực hiện việc này trong tệp php.ini.

Kể tên các phạm vi của biến trong PHP?

Phạm vi của biến [variable scope] được biết đến là ranh giới của biến, trong đó nó có thể được nhìn thấy hoặc được truy cập từ mã. Nói cách khác, nó là ngữ cảnh mà trong đó một biến được xác định. Chỉ có hai phạm vi có sẵn trong PHP là phạm vi cục bộ [local scope] và phạm vi toàn cục [global scope].

  • Local variables [phạm vi cục bộ]
  • Global variables [phạm vi toàn cục]
  • Static variables [phạm vi cục bộ]
  • Function parameters [phạm vi cục bộ]

Khi một biến được truy cập bên ngoài phạm vi của nó, nó sẽ gây ra lỗi

object[stdClass]#1 [3] {
   [0]=> string[12] "qualitypoint"
   [1]=> string[12] "technologies"
   [2]=> string[5] "India"
}
7 variable.

Có hàm nào để tạo một bản sao của một mảng sang một mảng khác trong PHP không?

Trong PHP, các mảng được gán bằng bản sao, trong khi các đối tượng được gán bằng tham chiếu nên PHP sẽ sao chép mảng theo mặc định. Các tham chiếu trong PHP phải rõ ràng:

$a = array[1,2];
$b = $a; // $b will be a different array
$c = &$a; // $c will be a reference to $a

Giải thích sự khác biệt giữa shell_exec[] và exec[]?

  • object[stdClass]#1 [3] {
       [0]=> string[12] "qualitypoint"
       [1]=> string[12] "technologies"
       [2]=> string[5] "India"
    }
    
    8 trả về tất cả đầu ra dưới dạng một chuỗi.
  • object[stdClass]#1 [3] {
       [0]=> string[12] "qualitypoint"
       [1]=> string[12] "technologies"
       [2]=> string[5] "India"
    }
    
    9 mặc định trả về dòng cuối cùng của đầu ra, nhưng có thể cung cấp tất cả đầu ra dưới dạng một mảng dựa theo tham số thứ hai.

Sự khác biệt giữa array_map, array_walk và array_filter là gì?

  • stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    0 nhận một mảng và một hàm F và sửa đổi nó bằng cách thay thế mọi phần tử x bằng
    stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    1.
  • stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    2 thực hiện điều tương tự, ngoại trừ việc thay vì sửa đổi tại chỗ, nó sẽ trả về một mảng mới với các phần tử đã biến đổi.
  • stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    3 với hàm F, thay vì biến đổi các phần tử, sẽ loại bỏ bất kỳ phần tử nào mà
    stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    1 bằng
    stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    5.

Giải thích sự khác biệt giữa exec[], system[] và passthru[]?

  • stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    6 là để gọi một lệnh của hệ thống và có thể tự xử lý đầu ra.
  • stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    7 là để thực hiện một lệnh của hệ thống và ngay lập tức hiển thị đầu ra - có thể là văn bản [text].
  • stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    8 là để thực hiện một lệnh của hệ thống và trả về cho bạn một bản thô [raw] - có lẽ là một nhị phân gì đó.

Sự khác biệt giữa query[] của PDO và execute[] là gì?

  • stdClass Object [
       [0] => qualitypoint
       [1] => technologies
       [2] => India
    ]
    
    9 chạy một câu lệnh SQL chuẩn và yêu cầu bạn thoát đúng cách tất cả dữ liệu để tránh SQL Injjection và các sự cố khác.
  • $a = array[1,2];
    $b = $a; // $b will be a different array
    $c = &$a; // $c will be a reference to $a
    
    0 chạy một câu lệnh được chuẩn bị sẵn cho phép bạn ràng buộc các tham số để tránh phải thoát hoặc trích dẫn các tham số. execute cũng sẽ hoạt động tốt hơn nếu bạn đang lặp lại một truy vấn nhiều lần.

Cách sử dụng tốt nhất là sử dụng

$a = array[1,2];
$b = $a; // $b will be a different array
$c = &$a; // $c will be a reference to $a
0 cho các câu lệnh đã chuẩn bị sẵn để tăng cường bảo mật. Ngoài tính năng thoát [escape] ở phía client mà nó cung cấp, một câu lệnh đã chuẩn bị được biên dịch ở phía server một lần và sau đó có thể được truyền các tham số khác nhau ở mỗi lần thực thi.

Chủ Đề