Hướng dẫn php oops interview questions for 6 years experience - câu hỏi phỏng vấn php oops cho 6 năm kinh nghiệm

Câu hỏi phỏng vấn PHP OOPS: Khái niệm oops trong PHP | Rất tiếc các câu hỏi và câu trả lời cho trải nghiệm trong PHP | Lập trình hướng đối tượng trong PHP

Hướng dẫn php oops interview questions for 6 years experience - câu hỏi phỏng vấn php oops cho 6 năm kinh nghiệm

Q:- Lập trình hướng đối tượng là gì?

Lập trình hướng đối tượng là một kỹ thuật lập trình để thiết kế ứng dụng của bạn. Ứng dụng có thể thuộc bất kỳ loại nào như nó có thể là ứng dụng dựa trên web, ứng dụng dựa trên Windows, v.v.

Trong lập trình hướng đối tượng, mọi thứ đều xoay quanh các đối tượng và lớp.

Q:- Lớp học là gì?

Một lớp là một mẫu cho một đối tượng, kiểu dữ liệu do người dùng xác định có chứa các biến, thuộc tính và phương thức.

Lớp đại diện cho tất cả các thuộc tính và hành vi của đối tượng.

người lớp {tên công khai $; tuổi $; hàm __construct ($ name, $ Age) {$ this-> name = $ name; $ this-> tuổi = $ tuổi; } hàm getUserDetails () {return "hi, tên tôi là". $ this-> tên. "và tôi". $ this-> tuổi. "cũ"; }} // Để tạo đối tượng PHP, chúng ta phải sử dụng toán tử mới. $ obj = người mới ("Ajay", 23); echo $ obj-> getUserDetails (); // ra: Xin chào, tôi tên là Ajay và tôi 23 tuổi
"; } } //To create php object we have to use a new operator. $obj = new Person("Ajay", 23); echo $obj->getUserDetails(); //Output: Hi, My Name is Ajay and I'm 23 old

Q:- Đối tượng là gì?

Các đối tượng được tạo từ các lớp, là một thể hiện của một lớp được tạo động.

Đối tượng trong lập trình tương tự như đối tượng từ thực. Mỗi đối tượng lập trình đều có một số thuộc tính và hành vi.

Bạn có thể tạo đối tượng của lớp với sự trợ giúp của từ khóa mớinew keyword

// tạo một đối tượng của myClass $ obj = new myClass (); Hoặc $ obj = mới myClass;

Bạn cũng có thể thích - câu hỏi về câu hỏi phỏng vấn nút JS của Node JS

Q:- Mối quan hệ giữa các lớp và đối tượng là gì?

Chúng trông rất giống nhau nhưng không giống nhau.

  1. Một lớp là một định nghĩa, trong khi một đối tượng là một thể hiện của lớp.
  2. Một lớp là một bản thiết kế trong khi các đối tượng là đối tượng thực tế tồn tại trong thế giới thực.

Giả sử chúng ta có một người có thuộc tính và phương pháp như tên, tuổi, chiều cao, cân nặng, màu sắc, v.v.

Người lớp chỉ là một nguyên mẫu, bây giờ chúng ta có thể tạo các đối tượng thời gian thực của người lớp.

#Example: Ajay là đối tượng thời gian thực của người lớp, có tên = ajay, tuổi = 23, chiều cao = 170cm, trọng lượng = 60kg và màu = đen, v.v. Ajay is real time object of class Person, which have name=Ajay, age=23, height=170cm, weight=60kg and color=black etc.

Lớp

  1. Một cách để liên kết dữ liệu và các chức năng liên quan với nhau.
  2. Lớp có nhiều đối tượng.
  3. Lớp là một mẫu để tạo các đối tượng.
  4. Đó là sự tồn tại logic.
  5. Không gian bộ nhớ không được phân bổ, khi nó được tạo.
  6. Định nghĩa (khai báo) được tạo một lần.
  7. Lớp được khai báo bằng cách sử dụng từ khóa "lớp".

Sự vật

  1. Thực thể thời gian chạy cơ bản trong môi trường định hướng đối tượng.
  2. Đối tượng chỉ thuộc về lớp.
  3. Đối tượng là một triển khai của lớp.
  4. Đó là sự tồn tại về thể chất.
  5. Không gian bộ nhớ được phân bổ khi nó được tạo.
  6. Nó được tạo ra nhiều lần như bạn yêu cầu.
  7. Đối tượng là thể hiện hoặc biến của lớp.

Q:- Chất xây dựng và phá hủy là gì?

Constructor:

Constructor là một loại chức năng đặc biệt sẽ được gọi là tự động bất cứ khi nào có bất kỳ đối tượng nào được tạo từ một lớp.

// Lớp cũ (php4) myClass {function myClass () {// xác định logic trong trình xây dựng}}

// lớp mới

Ghi chú- Chất xây dựng kiểu cũ được không dùng nữa trong Php 7.0 và sẽ bị xóa trong phiên bản trong tương lai. Bạn nên luôn luôn sử dụng __construct () trong mã mới.

Destructor:

Destructor là một loại chức năng đặc biệt sẽ được gọi tự động bất cứ khi nào bất kỳ đối tượng nào bị xóa hoặc đi ra khỏi phạm vi.

class myClass {function __construct () {// xác định logic trong trình xây dựng} hàm __destruct () {// đây là phá hủy}}

Các loại nhà xây dựng:

  1. Nhà xây dựng mặc định
  2. Một hàm tạo không có bất kỳ tham số nào được gọi là hàm tạo mặc định.

  3. Hàm tạo tham số hóa
  4. Một hàm tạo có ít nhất một tham số được gọi là hàm tạo tham số.

    người lớp {tên công khai $; Địa chỉ $ công khai; Hàm công khai __Construct ($ name) {// Trình xây dựng được tham số hóa với đối số tên $ this-> name = $ name; }} $ perobj1 = người mới ("hướng dẫn ngăn xếp đầy đủ"); // Trình xây dựng được tham số hóa với đối số tên echo $ perobj1-> tên; // Đầu ra: Hướng dẫn đầy đủ

  5. Sao chép hàm tạo
  6. người lớp {tên công khai $; Địa chỉ $ công khai; Hàm công khai __Construct ($ name) {// Trình xây dựng được tham số hóa với đối số tên $ this-> name = $ name; } hàm công khai __clone () {}} $ perobj1 = người mới ("hướng dẫn ngăn xếp đầy đủ"); // Trình xây dựng được tham số hóa với đối số tên $ perobj2 = clone $ perobj1; // Sao chép trình xây dựng khởi tạo $ perobj2 với các giá trị của $ perobj1 echo $ perobj2-> tên; // Đầu ra: Hướng dẫn đầy đủ

  7. Hàm tạo tĩnh
  8. Nhà xây dựng riêng
  9. Mục đích của hàm tạo riêng: Nó đảm bảo rằng chỉ có thể có một trường hợp của một lớp và cung cấp một điểm truy cập toàn cầu cho trường hợp đó và điều này là phổ biến với mẫu singleton. It ensures that there can be only one instance of a Class and provides a global access point to that instance and this is common with The Singleton Pattern.

    lớp myclass {cá thể $ private static; Hàm riêng __Construct () {} Hàm tĩnh công khai get_instance () {if (! self :: $ streme) self :: $ instance = new myClass (); trả lại bản thân :: $ cá thể; }}

Q:- Hàm biến thành viên và thành viên là gì?

Biến thành viên - Đây là các biến được xác định bên trong một lớp. Dữ liệu này sẽ vô hình ở bên ngoài lớp và có thể được truy cập thông qua các chức năng thành viên. Các biến này được gọi là thuộc tính của đối tượng sau khi một đối tượng được tạo. − These are the variables defined inside a class. This data will be invisible to the outside of the class and can be accessed via member functions. These variables are called attribute of the object once an object is created.

Hàm thành viên - Đây là hàm được xác định bên trong một lớp và được sử dụng để truy cập dữ liệu đối tượng. − These are the function defined inside a class and are used to access object data.

Q:- Các loại khả năng hiển thị khác nhau là gì? Hoặc các công cụ sửa đổi truy cập là gì?

Mỗi phương pháp và tài sản có khả năng hiển thị của nó. Có ba loại khả năng hiển thị trong PHP.

Các loại khả năng hiển thị:

  1. Công khai: Phương thức công khai hoặc biến có thể được truy cập từ bất cứ đâu, có nghĩa là một phương thức công khai hoặc biến của một lớp có thể được gọi bên ngoài lớp hoặc trong một lớp con. Public method or variable can be accessible from anywhere, Means a public method or variable of a class can be called outside of the class or in a subclass.
  2. Được bảo vệ: Một phương thức hoặc biến được bảo vệ chỉ có thể được gọi trong lớp đó và lớp con. A protected method or variable can only be called in that class & it's subclass.
  3. Riêng tư: Một phương thức riêng hoặc biến của một lớp chỉ có thể được gọi bên trong lớp đó chỉ có thể được khai báo. A private method or variable of a class can only be called inside that class only in which it is declared.

Lưu ý: Theo mặc định, trong PHP, một thành viên lớp là công khai trừ khi được tuyên bố riêng tư hoặc được bảo vệ. By default, in PHP, a class member is public unless declared private or protected.

Q:- Đóng gói là gì?

Kết thúc các biến và phương thức thành viên với nhau thành một đơn vị (tức là lớp) được gọi là đóng gói.
  1. Đóng gói được sử dụng để ẩn các giá trị hoặc trạng thái của một đối tượng dữ liệu có cấu trúc bên trong một lớp, ngăn chặn quyền truy cập trực tiếp của các bên trái phép vào chúng.
  2. Tầm nhìn là cơ chế đóng gói.

người lớp {tên tư nhân $; hàm công khai setName ($ name) {$ this-> name = $ name; } hàm công khai getName ($ name) {return $ this-> tên; }} $ personObj = new person (); $ personObj-> setName ('Hướng dẫn ngăn xếp đầy đủ'); $ personobj-> getName ();

Bạn cũng có thể thích - Câu trả lời câu hỏi phỏng vấn PHP cốt lõi

Q:- Sự trừu tượng là gì?

Trừu tượng là một khái niệm trong đó chi tiết thực hiện được ẩn.

Lớp học trừu tượng:

Lớp trừu tượng là lớp chứa ít nhất một hoặc nhiều phương pháp trừu tượng.

Phương pháp trừu tượng:

Phương pháp trừu tượng là một phương pháp được khai báo, nhưng không được xác định.
  1. Php 5 giới thiệu các lớp và phương pháp trừu tượng.
  2. Các lớp được xác định là trừu tượng có thể không được khởi tạo
  3. Các lớp chứa ít nhất một phương pháp trừu tượng cũng phải trừu tượng.
  4. Các phương thức được xác định là trừu tượng chỉ đơn giản là khai báo chữ ký của phương thức - chúng không thể xác định việc thực hiện. Phương pháp trừu tượng không thể được định nghĩa là riêng tư.
  5. Các lớp kế thừa lớp cha của nó phải cung cấp các triển khai cho các phương thức trừu tượng.

Tóm tắt lớp tv {private $ ison = false; Hàm trừu tượng getBrand (); hàm công khai Turnontv () {$ this-> ison = true; } chức năng công khai TurnOfftV () {$ this-> ison = false; }} lớp Panasonic mở rộng TV {function getBrand () {return "panasonic"; }} lớp sony mở rộng TV {hàm công khai getBrand () {return "sony"; }}

Q:- Thuộc tính lớp có thể trừu tượng không?

Không. Không cần một tài sản lớp để trừu tượng. Các thuộc tính và hằng số lớp không được thực hiện, thay vào đó, chúng được tuyên bố, theo một cách nào đó đã làm cho chúng trừu tượng. Họ tuân theo các quy tắc tương tự và được đối xử theo cùng một cách khi được khai báo trong một lớp trừu tượng như bất kỳ lớp nào khác. there is no need for a class property to be abstract. Class properties and constants are not implemented, instead, they are declared, which in a way already makes them abstract. They follow the same rules and are treated the same way when declared in an abstract class as they would any other class.

Lưu ý: Tất cả các lớp còn lại không được trừu tượng được gọi là các lớp cụ thểConcrete Classes

Q:- Nhu cầu của lớp trừu tượng là gì?

Giả sử chúng ta đang mô hình hóa hành vi của động vật, bằng cách tạo ra một hệ thống phân cấp lớp bắt đầu với một lớp cơ sở gọi là động vật.

Động vật có khả năng làm những việc khác nhau như bay, đào và đi bộ, nhưng có một số hoạt động phổ biến cũng như ăn và ngủ.

Một số hoạt động phổ biến được thực hiện bởi tất cả các động vật, nhưng theo một cách khác.

Khi một hoạt động được thực hiện theo một cách khác, đó là một ứng cử viên tốt cho một phương pháp trừu tượng (buộc các lớp con phải cung cấp một triển khai tùy chỉnh).

Q:- Giải thích về đa hình?

Nó chỉ đơn giản là "một điều, có thể sử dụng ở các hình thức khác nhau". Về mặt kỹ thuật, đó là khả năng xác định lại các phương pháp cho các lớp dẫn xuất.

#Example: Một lớp (xe hơi) có thể mở rộng hai lớp (Audi & BMW). One Class (Car) can extend two classes (Audi & BMW).

Đa hình mô tả một mẫu trong lập trình hướng đối tượng trong đó các lớp có chức năng khác nhau trong khi chia sẻ một giao diện chung.
Bạn cũng có thể thích - câu trả lời câu hỏi phỏng vấn MySQL

Q:- Các loại đa hình?

Đa hình có thể là tĩnh và năng động cả hai. Quá tải là đa hình tĩnh trong khi, ghi đè là đa hình động.

  1. Biên dịch tính đa hình thời gian (tĩnh) - quá tải phương pháp
  2. Tính đa hình thời gian chạy (Dynamic) - Phương pháp ghi đè
  1. Quá tải là xác định các hàm/phương thức có cùng chữ ký với các tham số khác nhau trong cùng một lớp. is defining functions/methods that have same signatures with different parameters in the same class.
  2. Ghi đè là định nghĩa lại các chức năng/phương thức lớp cha trong lớp con có cùng chữ ký. Vì vậy, về cơ bản mục đích của việc ghi đè là thay đổi hành vi của phương pháp lớp cha của bạn. is redefining parent class functions/methods in child class with same signature. So, basically the purpose of overriding is to change the behavior of your parent class method.

Các phương pháp quá tải được gọi khi tương tác với các thuộc tính hoặc phương thức chưa được khai báo hoặc không hiển thị trong phạm vi hiện tại. Phần còn lại của phần này sẽ sử dụng các thuật ngữ "các thuộc tính không thể tiếp cận" và "các phương pháp không thể truy cập" để chỉ sự kết hợp giữa tuyên bố và khả năng hiển thị này.

// Ví dụ: Quá tải phương thức vì PHP không hỗ trợ quá tải. Trong PHP, bạn chỉ có thể quá tải các phương thức bằng phương thức ma thuật __call ()

Phương pháp ma thuật trong PHP

// Ví dụ: Phương thức ghi đè lớp a {function testFunc () {return "Tôi là bên trong lớp A"; }} Lớp B mở rộng A {function testFunc () {return "Tôi là bên trong lớp B"; }} $ obja = new a; $ objb = new b; echo ($ obja-> testfunc ()); // "Tôi ở trong lớp A" Echo ($ objb-> testFunc ()); // "Tôi đang ở bên trong lớp B" // ra

Đa hình sử dụng giao diện & lớp trừu tượng

Một giao diện là một thỏa thuận hoặc một hợp đồng. Khi một lớp thực hiện một giao diện, nó có nghĩa là nó chứa cùng các phương thức công khai của một giao diện với việc triển khai của chúng.
Để thực hiện nguyên tắc đa hình, chúng ta có thể chọn giữa các lớp và giao diện trừu tượng.

Trong ví dụ được đưa ra dưới đây, giao diện với tên của hình dạng cam kết tất cả các lớp thực hiện nó để xác định một phương thức trừu tượng với tên của calcarea ().

hình dạng giao diện {hàm công khai calcarea (); }

Theo, lớp vòng tròn thực hiện hình dạng giao diện bằng cách đưa vào phương thức calcarea (), công thức tính toán diện tích của các vòng tròn.Circle class implements the interface Shape by putting into the calcArea() method the formula that calculates the area of circles.

Vòng tròn thực hiện hình dạng {radius $ private $; Hàm công khai __Construct ($ RADIUS) {$ this-> RADIUS = $ RADIUS; } // calcarea tính toán diện tích của vòng tròn hàm công cộng calcarea () {return $ this-> RADIUS * $ this-> RADIUS * pi (); }}

Lớp hình chữ nhật cũng thực hiện hình dạng giao diện nhưng xác định phương thức calcarea () với công thức tính toán phù hợp với hình chữ nhật:Rectangle class also implements the interface Shape but defines the method calcArea() with a calculation formula that is suitable for rectangles:

lớp hình chữ nhật thực hiện hình dạng {private $ width; chiều cao $ tư nhân; Hàm công khai __Construct ($ width, $ height) {$ this-> width = $ width; $ this-> chiều cao = $ chiều cao; } // calcarea tính toán diện tích của hình chữ nhật hàm công khai calcarea () {return $ this-> width * $ this-> chiều cao; }}

Bây giờ, chúng ta có thể tạo các đối tượng từ các lớp cụ thể:

$ CIROBJ = Vòng tròn mới (3); $ orthobj = hình chữ nhật mới (2,4);

Chúng tôi có thể chắc chắn rằng tất cả các đối tượng tính toán khu vực với phương thức có tên của calcarea (), cho dù đó là đối tượng hình chữ nhật hay đối tượng vòng tròn (hoặc bất kỳ hình dạng nào khác), miễn là chúng thực hiện giao diện hình dạng.

Bây giờ, chúng ta có thể sử dụng các phương thức calcarea () để tính diện tích của các hình dạng:

echo $ cirobj-> calcarea (); // đầu ra: 28.274 echo $ orthobj-> calcarea (); // Đầu ra: 8

Lưu ý: Đa hình giúp tăng cường tính linh hoạt và khả năng tái sử dụng của ứng dụngPolymorphism enhances the flexibility and reusability of the application

Q:- Sự khác biệt chính giữa lớp cụ thể và lớp trừu tượng là gì?

Các lớp cụ thể là các lớp phải khai báo các phương pháp trừu tượng mở rộng hoặc thực hiện từ lớp trừu tượng hoặc giao diện

HOẶC

Các lớp trừu tượng thường có một phần hoặc không thực hiện. Mặt khác, các lớp cụ thể luôn thực hiện đầy đủ hành vi của nó. Không giống như các lớp cụ thể, các lớp trừu tượng không thể được khởi tạo.

Q:- Sự khác biệt giữa lớp trừu tượng và giao diện là gì?

Lớp học trừu tượngGiao diện
Trong lớp trừu tượng, phương pháp A phải được khai báo là trừu tượng. Phương pháp trừu tượng không có bất kỳ việc thực hiện.Trong giao diện, tất cả các phương thức theo mặc định là trừu tượng.
Lớp trừu tượng cũng có thể chứa các biến thành viên và các hàm/phương thức cụ thể.Các giao diện không thể chứa bất kỳ biến thành viên nào và các hàm/phương thức cụ thể ngoại trừ các hằng số.
Một phương pháp trừu tượng có thể được khai báo với các bộ điều chỉnh truy cập như công khai, được bảo vệ, v.v. lớp cụ thể đang mở rộng lớp trừu tượng phải được xác định với cùng một hoặc khả năng hiển thị.Tất cả các phương thức được khai báo trong một giao diện phải được công khai.
Một lớp chỉ có thể thừa hưởng một lớp trừu tượng và không thể di truyền cho lớp trừu tượng.Một lớp có thể thực hiện nhiều giao diện và di truyền nhiều giao diện là có thể.
Chỉ thành viên hoàn chỉnh của lớp trừu tượng mới có thể là tĩnh.Memebrs của giao diện không thể tĩnh.

Q:- Khi nào nên sử dụng lớp trừu tượng và giao diện trong PHP? Giải thích với ví dụ trong thế giới thực?

Lớp học trừu tượng:

Lớp trừu tượng được sử dụng khi bạn một cái gì đó bạn biết (phương pháp cụ thể) và một cái gì đó mà bạn không biết (phương pháp trừu tượng).

Interface:

Giao diện được sử dụng khi bạn không biết gì về việc thực hiện. (Tất cả các phương pháp đều trừu tượng)

Bây giờ, hãy hiểu nó với ví dụ trong thế giới thực:

Hãy xem xét chúng tôi đang phát triển một dịch vụ đặt phòng bay.

  1. Hiển thị các chuyến bay có sẵn từ các nhà cung cấp như "Air India", "Indigo" và "British Airways", v.v.
  2. Đặt hàng chỗ ngồi cho nhà cung cấp tương ứng.

Hãy nhớ rằng, trong ứng dụng này, chúng tôi không sở hữu bất kỳ chuyến bay nào. Chúng tôi chỉ là một hòa giải viên cung cấp dịch vụ.

Vì vậy, về cơ bản chúng ta cần hai phương pháp:

  1. CheckFlightSavailable () - Để kiểm tra các chuyến bay có sẵn từ tất cả các dịch vụ Filghts Comapny.
  2. BookFlight () - Để đặt các chuyến bay từ Công ty Dịch vụ Chuyến bay có sẵn.

Vì vậy, cuối cùng, giao diện rất hữu ích vì chúng tôi không nhận thức được việc triển khai thực tế của tất cả các phương thức trên cần thiết, chúng tôi chỉ biết các phương thức hợp đồng mà nhà cung cấp (người triển khai) nên cung cấp.

Giao diện FLIGHTService {Chức năng công cộng CheckflightSavailable (); Chức năng công cộng Bookflights (); } lớp Airindia thực hiện các chuyến bay {Chức năng công cộng CheckflightSavailable () {// Nhận danh sách các chuyến bay có sẵn} Chức năng công cộng BookFlights () {// Sách có sẵn các chuyến bay} Chuyến bay} chức năng công cộng Bookflight () {// Sách có sẵn các chuyến bay}} lớp BritishAirways thực hiện các chuyến bay {Chức năng công cộng ChecklightSavailable () {// Nhận danh sách các chuyến bay có sẵn} chức năng công cộng

Q:- Từ khóa cuối cùng là gì?

Php 5 giới thiệu từ khóa cuối cùng, ngăn chặn các lớp con ghi đè một phương thức bằng cách tiền tố định nghĩa với cuối cùng. Nếu bản thân lớp đang được xác định cuối cùng thì nó không thể được mở rộng.

Ví dụ #1 Phương pháp cuối cùng ví dụ

lớp baseclass {kiểm tra chức năng công khai () {echo "baseclass :: test () được gọi là \ n"; } hàm công khai cuối cùng moretesting () {echo "baseclass :: moretesting () được gọi là \ n"; }} lớp ChildClass mở rộng baseclass {hàm công khai moretesting () {echo "ChildClass :: moretesting () được gọi là \ n"; }} // dẫn đến lỗi gây tử vong: Không thể ghi đè phương thức cuối cùng Baseclass :: moretesting ()

Ví dụ #2 Ví dụ về lớp cuối cùng

Lớp cuối cùng Baseclass {test chức năng công khai () {echo "baseclass :: test () được gọi là \ n"; } // Ở đây không có vấn đề gì nếu bạn chỉ định hàm là cuối cùng hay không chức năng công cộng cuối cùng moretesting () {echo "baseclass :: moretesting () được gọi là \ n"; } A

Lưu ý: Thuộc tính không thể được khai báo cuối cùng, chỉ các lớp và phương thức có thể được khai báo là cuối cùng. Properties cannot be declared final, only classes and methods may be declared as final.

Q:- Từ khóa tĩnh là gì và nó được sử dụng trong PHP là gì?

Tuyên bố các biến hoặc phương thức thành viên lớp là tĩnh giúp chúng có thể truy cập mà không cần khởi tạo lớp. Một thành viên được tuyên bố là tĩnh không thể được truy cập với một đối tượng lớp khởi tạo (mặc dù phương thức tĩnh có thể).
  1. Phương pháp và tính chất tĩnh trong PHP sẽ được coi là công khai nếu không có khả năng hiển thị được xác định.
  2. tĩnh cũng có thể được sử dụng để xác định các biến tĩnh và cho các liên kết tĩnh muộn.

Note:

  • Trong Php 5, gọi các phương thức phi tĩnh sẽ tạo ra một cảnh báo cấp E_strict.
  • Trong Php 7, việc gọi các phương thức phi tĩnh một cách độc đáo được không dùng nữa và sẽ tạo ra cảnh báo e_deprecated. Hỗ trợ gọi các phương thức phi tĩnh một cách thống trị có thể bị xóa trong tương lai.

#Example: Gọi phương thức không tĩnh bằng cách tĩnh

error_Reporting (e_all); // trong khi bạn có thông báo cảnh báo và lỗi ẩn. lớp testClass {hàm công khai Sayhello () {echo "xin chào"; }} echo testClass :: Sayhello (); // Đầu ra: Không dùng nữa: Phương thức không tĩnh TestClass :: Sayhello () không nên được gọi là thống kê trong C: \ Xampp \ HtDocs \ test_projects \ index.php trên dòng 7 Xin chào

#Ví dụ

lớp testClass {chức năng tĩnh công khai testMethod () {echo "Đây là phương thức tĩnh."; }} echo testClass :: testMethod (); // Đầu ra: Đây là phương pháp tĩnh.

Bạn cũng có thể thích - câu hỏi phỏng vấn MongoDB câu trả lời

Q:- Đặc điểm trong PHP là gì?

Đặc điểm là một cơ chế để tái sử dụng mã trong các ngôn ngữ kế thừa duy nhất như PHP.
  1. Một đặc điểm nhằm giảm một số hạn chế của việc thừa kế bằng cách cho phép nhà phát triển sử dụng lại các bộ phương thức một cách tự do trong một số lớp độc lập sống trong các phân cấp lớp khác nhau.
  2. Các ngữ nghĩa của sự kết hợp của các đặc điểm và các lớp được định nghĩa theo cách làm giảm độ phức tạp và tránh các vấn đề điển hình liên quan đến nhiều kế thừa và mixin.
  3. Một đặc điểm tương tự như một lớp, nhưng chỉ nhằm mục đích nhóm chức năng theo cách hạt mịn và nhất quán.
  4. Không thể khởi tạo một đặc điểm mà là một bổ sung cho thừa kế truyền thống. Nó nhằm giảm một số hạn chế của việc thừa kế đơn lẻ để sử dụng lại các bộ phương pháp một cách tự do trong một số lớp độc lập sống trong các hệ thống phân cấp lớp khác nhau.
  5. Nhiều đặc điểm có thể được chèn vào một lớp bằng cách liệt kê chúng trong câu lệnh sử dụng, được phân tách bằng dấu phẩy (,).
  6. Nếu hai đặc điểm chèn một phương thức có cùng tên, một lỗi gây tử vong được tạo ra.

Lưu ý: Nhiều đặc điểm có thể được sử dụng trong một lớp bằng cách liệt kê chúng trong câu lệnh sử dụng, được phân tách bằng dấu phẩy. Multiple traits can be used in a class by listing them in the use statement, separated by commas.

#Example - sử dụng nhiều đặc điểm

Đặc điểm xin chào {hàm công khai Sayhello () {echo 'xin chào'; }} tính trạng thế giới {hàm công khai Sayworld () {echo 'thế giới'; }} lớp myhelloworld {sử dụng hello, thế giới; Hàm công khai SayExclamationMark () {echo '!'; }} $ o = new myHellowArld (); $ o-> Sayhello (); $ o-> Sayworld (); $ o-> SayExclamationMark (); // Đầu ra: Xin chào Thế giới!

#thay vì

Nếu hai đặc điểm chèn một phương thức có cùng tên, một lỗi gây tử vong được tạo ra, nếu xung đột không được giải quyết rõ ràng. Để giải quyết xung đột đặt tên giữa các đặc điểm được sử dụng trong cùng một lớp, toán tử thay thế cần được sử dụng để chọn chính xác một trong các phương pháp mâu thuẫn.insteadof operator needs to be used to choose exactly one of the conflicting methods.

Vì điều này chỉ cho phép người ta loại trừ các phương thức, nên có thể sử dụng toán tử AS để thêm bí danh vào một trong các phương thức. Lưu ý rằng toán tử không đổi tên phương thức và nó cũng không ảnh hưởng đến bất kỳ phương thức nào khác.

#Example - Giải quyết xung đột

Trong ví dụ này, người nói chuyện sử dụng các đặc điểm A và B. Vì A và B có các phương pháp mâu thuẫn, nó xác định để sử dụng biến thể của SmallTalk từ Đặc điểm B và biến thể của BigTalk từ Đặc điểm A.

Bí danh_Talker sử dụng như một nhà điều hành để có thể sử dụng triển khai BigTalk của B theo một cuộc nói chuyện bí danh bổ sung.

Đặc điểm a {hàm công khai smallTalk () {echo 'a'; } chức năng công khai BigTalk () {echo 'a'; }} Đặc điểm b {hàm công khai smallTalk () {echo 'b'; } chức năng công cộng BigTalk () {echo 'b'; }} lớp Talker {sử dụng a, b {b :: smallTalk thay thế a; A :: BigTalk thay thế b; }} $ obj = new Talker (); $ obj-> smallTalk (); $ obj-> bigtalk (); // Đầu ra: BA

Q:- Loại gợi ý loại trong PHP là gì?

Loại gợi ý loại được sử dụng để chỉ định kiểu dữ liệu dự kiến ​​(mảng, đối tượng, giao diện, v.v.) cho một đối số trong khai báo hàm.

Nó có lợi vì nó dẫn đến tổ chức mã tốt hơn và các thông báo lỗi được cải thiện.

Giả sử chúng ta muốn buộc một hàm chỉ nhận các đối số của mảng loại, sau đó chúng ta chỉ có thể đặt từ khóa mảng trước tên của đối số.

Hàm myFunction (mảng $ argion_name) {// khối mã}

Nó cũng được biết là khai báo loại.

Q:- Không gian tên trong PHP là gì?

Không gian tên được sử dụng để tránh các định nghĩa mâu thuẫn và cho phép linh hoạt và tổ chức hơn trong cơ sở mã của bạn.

Trong Php phiên bản 5.3, một tính năng mới đã được thêm vào ngôn ngữ được gọi là không gian tên.

Trong PHP, chúng ta có thể có hai lớp có cùng tên. Tên nên là duy nhất. Vấn đề với hạn chế này là nếu bạn đang sử dụng bất kỳ thư viện bên thứ ba nào có người dùng có tên lớp, thì bạn có thể tạo lớp của riêng mình với người dùng tên.

không gian tên Google; Lớp tìm kiếm {Truy vấn chức năng công khai () {return 'Tìm kiếm Google'; }} không gian tên Bing; Lớp tìm kiếm {Truy vấn chức năng công khai () {return 'Tìm kiếm Bing'; }}

Bạn có thể nhập các không gian tên vào không gian tên Anohter hoặc lớp bằng cách sử dụng từ khóa "sử dụng" và "làm" từ khóa.

Lưu ý: Tên không gian tên không nhạy cảm trường hợp.

Q:- __namespace__ là gì?

Đây là một hằng số đề cập đến không gian tên hiện tại. Trong không gian tên toàn cầu, hằng số này không có giá trị hoặc một chuỗi trống.

Q:- Cách đếm các đối tượng của một lớp trong PHP

lớp CountClassObjects {public static $ Count = 0; Hàm công khai __Construct () {self :: $ Count ++; } hàm công khai xyz () {// code}} $ obj1 = new CountClassObjects (); $ obj2 = new CountClassObjects (); $ obj3 = new CountClassObjects (); $ obj4 = New CountClassObjects (); $ obj5 = New CountClassObjects (); Echo "Số lượng đối tượng trong lớp CountClassObjects là". CountClassObjects :: $ đếm; // ra // số lượng đối tượng trong lớp CountClassObjects là 5

Hỏi:- Những lợi thế của lập trình hướng đối tượng là gì?

  1. Khả năng phục hồi mã: Nó có thể đạt được thông qua kế thừa và đặc điểm it can be acheived through inheritance and traits
  2. Mô -đun: Nó có thể đạt được thông qua việc chia mã lớn thành các mô -đun nhỏ, mô -đun làm giảm độ phức tạp. it can be acheived through breaking large code into small modules, Modularity reduces complexity.
  3. Tính linh hoạt: Nó có thể đạt được thông qua đa hình it can be acheived through polymorphism
  4. Khả năng duy trì: Đó là duy trì mã theo các khái niệm lập trình hướng đối tượng. it is to maintian code which follow Object Oriented Programming Concepts.
  5. Bảo mật: Nó có thể đạt được thông qua đóng gói it can be acheived through Encapsulation
  6. Khả năng kiểm tra: Thật dễ dàng để kiểm tra. it is easy to test.

Đây là tất cả về câu hỏi phỏng vấn PHP OOPS | Các khái niệm oops trong PHP