118 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Tôi đã từ bỏ tất cả hy vọng có thể làm quá tải các nhà xây dựng của mình trong PHP, vì vậy điều tôi thực sự muốn biết là tại sao. Thậm chí có một lý do cho nó? Nó có tạo ra mã xấu vốn có không? Có phải thiết kế ngôn ngữ được chấp nhận rộng rãi để không cho phép nó, hoặc các ngôn ngữ khác đẹp hơn PHP? Đã hỏi ngày 30 tháng 1 năm 2010 lúc 21:12Jan 30, 2010 at 21:12
2 Bạn không thể quá tải bất kỳ phương thức nào trong PHP. Nếu bạn muốn có thể khởi tạo một đối tượng PHP trong khi chuyển một số kết hợp các tham số khác nhau, hãy sử dụng mẫu nhà máy với một hàm tạo riêng. Ví dụ:
Đã trả lời ngày 1 tháng 2 năm 2010 lúc 7:15Feb 1, 2010 at 7:15
Alex Weinsteinalex WeinsteinAlex Weinstein 9.7558 Huy hiệu vàng43 Huy hiệu bạc59 Huy hiệu Đồng8 gold badges43 silver badges59 bronze badges 5 Bạn có thể sử dụng các đối số biến để tạo ra hiệu ứng tương tự. Nếu không có gõ mạnh, việc thêm nhiều, đưa ra các đối số mặc định và tất cả các "công việc khác xung quanh". Đã trả lời ngày 30 tháng 1 năm 2010 lúc 21:27Jan 30, 2010 at 21:27
pestilence669pestilence669pestilence669 5.6181 Huy hiệu vàng22 Huy hiệu bạc34 Huy hiệu đồng1 gold badge22 silver badges34 bronze badges 1 Để hoàn thiện, tôi sẽ đề xuất giao diện thông thạo. Ý tưởng là bằng cách thêm 8 vào cuối các phương thức của bạn, bạn có thể chuỗi các cuộc gọi cùng nhau. Vì vậy, thay vì
(đơn giản là không hoạt động), bạn có thể làm:
Bằng cách đó, bạn có thể chọn chính xác tài sản bạn muốn đặt. Theo nhiều cách, nó tương tự như chuyển trong một loạt các tùy chọn cho cuộc gọi ban đầu của bạn:
Đã trả lời ngày 28 tháng 6 năm 2016 lúc 13:46Jun 28, 2016 at 13:46
CodemonKeyCodemonkeyCodemonkey 4.2694 Huy hiệu vàng39 Huy hiệu bạc73 Huy hiệu đồng4 gold badges39 silver badges73 bronze badges 5 Quá tải thực sự thực sự không được hỗ trợ trong PHP. Như @pestilence đã đề cập, bạn có thể sử dụng các đối số biến. Một số người chỉ sử dụng một mảng kết hợp của các tùy chọn khác nhau để khắc phục điều này. Đã trả lời ngày 30 tháng 1 năm 2010 lúc 21:30Jan 30, 2010 at 21:30
Dominic Barnesdominic BarnesDominic Barnes Phim thương hiệu vàng 27,7K88 gold badges64 silver badges89 bronze badges Hướng dẫn sử dụng PHP: Đối số chức năng, giá trị mặc định Tôi đã khắc phục điều này chỉ bằng cách sử dụng các giá trị mặc định cho các tham số chức năng. Trong 9, đầu tiên liệt kê các tham số cần thiết. Liệt kê các tham số tùy chọn sau đó ở dạng chung 0.
Điều này có thể được khởi tạo như:
hoặc
Đây không phải là một giải pháp hoàn hảo, nhưng tôi đã thực hiện công việc này bằng cách tách các tham số thành các tham số hoàn toàn bắt buộc cho dù khi đối tượng được xây dựng, và, như một nhóm, các tham số tùy chọn được liệt kê theo thứ tự quan trọng.absolutely mandatory parameters no matter when the object is constructed, and, as a group, optional parameters listed in order of importance. Nó hoạt động. Đã trả lời ngày 13 tháng 2 năm 2017 lúc 19:00Feb 13, 2017 at 19:00
Anthony Rutledgeanthony RutledgeAnthony Rutledge 6.2821 Huy hiệu vàng36 Huy hiệu bạc43 Huy hiệu đồng1 gold badge36 silver badges43 bronze badges Họ nói công việc này:
Và, có vẻ như mọi người đều hài lòng với nó, nhưng đối với tôi nó không hoạt động ... nếu bạn làm cho nó hoạt động, đó là một loại quá tải ... Nó lấy tất cả các đối thủ và chuyển chúng cho hàm tạo hàm thứ cấp ... Đã trả lời ngày 26 tháng 12 năm 2012 lúc 12:38Dec 26, 2012 at 12:38
Hassan Faghihihassan FaghihiHassan Faghihi 1.7561 Huy hiệu vàng 38 Huy hiệu bạc51 Huy hiệu Đồng1 gold badge38 silver badges51 bronze badges 3
?> Đã trả lời ngày 19 tháng 10 năm 2017 lúc 11:14Oct 19, 2017 at 11:14
Bạn có thể sử dụng các câu lệnh có điều kiện trong hàm tạo của mình và sau đó thực hiện nhiệm vụ của bạn. Ví dụ.
và như thế...
Jonsca 10.1k26 Huy hiệu vàng54 Huy hiệu bạc61 Huy hiệu Đồng26 gold badges54 silver badges61 bronze badges Đã trả lời ngày 2 tháng 12 năm 2012 lúc 8:22Dec 2, 2012 at 8:22
DrGeneraldrgeneralDrGeneral 1.47914 Huy hiệu bạc21 Huy hiệu đồng14 silver badges21 bronze badges Tất nhiên bạn có thể quá tải bất kỳ chức năng nào trong PHP bằng các phương thức ma thuật __call () và __callstatic (). Đó là một chút khó khăn, nhưng việc thực hiện có thể làm chính xác những gì bạn đang tìm kiếm. Dưới đây là tài nguyên trên trang web chính thức của PHP.NET: https://www.php.net/manual/en/language.oop5.overloading.php#object.call Và đây là ví dụ hoạt động cho cả phương pháp tĩnh và không tĩnh: 0Và bạn có thể áp dụng điều này cho các hàm tạo bằng cách sử dụng mã sau trong __construct (): 1Khá dễ dàng. Và bạn có thể muốn triển khai __clone () để tạo một bản sao của lớp với phương thức mà bạn gọi mà không có chức năng mà bạn gọi trong mọi trường hợp ... Thêm câu trả lời này cho tính đầy đủ đối với PHP hiện tại, vì các phiên bản PHP sau này, thực tế bạn có thể làm quá tải các hàm tạo theo một cách nào đó. Mã sau sẽ giúp hiểu, 2Đầu ra: 3Đã trả lời ngày 9 tháng 9 năm 2020 lúc 17:10Sep 9, 2020 at 17:10
parth_07parth_07parth_07 1.25216 huy hiệu bạc20 Huy hiệu đồng16 silver badges20 bronze badges 1 Trong trường hợp này, tôi khuyên bạn nên sử dụng giao diện: 4hơn trong mã của bạn: 5Đã trả lời ngày 7 tháng 2 lúc 8:08Feb 7 at 8:08
Theo như tôi biết, không được phép quá tải hàm tạo trong PHP, đơn giản là vì các nhà phát triển của PHP không bao gồm chức năng đó - đây là một trong nhiều khiếu nại về PHP. Tôi đã nghe nói về các thủ thuật và cách giải quyết, nhưng quá tải đúng theo nghĩa OOP bị thiếu. Có thể trong các phiên bản tương lai, nó sẽ được bao gồm. Đã trả lời ngày 30 tháng 1 năm 2010 lúc 21:20Jan 30, 2010 at 21:20
SALTSCHARLIE SALTSCHARLIECharlie Salts 12.8k7 Huy hiệu vàng47 Huy hiệu bạc77 Huy hiệu đồng7 gold badges47 silver badges77 bronze badges Tôi nghĩ rằng chúng ta cũng có thể sử dụng hàm tạo với các đối số mặc định như một sự thay thế tiềm năng để tạo quá tải hàm tạo trong PHP.constructor with default arguments as a potential substitute to constructor overloading in PHP. Tuy nhiên, thực sự đáng buồn khi quá tải hàm tạo thực sự không được hỗ trợ trong PHP. Đã trả lời ngày 18 tháng 3 năm 2013 lúc 5:23Mar 18, 2013 at 5:23
6Đã trả lời ngày 18 tháng 8 năm 2018 lúc 12:50Aug 18, 2018 at 12:50
Anteloveanteloveantelove 2.78420 Huy hiệu bạc19 Huy hiệu đồng20 silver badges19 bronze badges 7Đã trả lời ngày 14 tháng 12 năm 2020 lúc 11:23Dec 14, 2020 at 11:23
Ali Razaali RazaAli Raza 5925 Huy hiệu bạc13 Huy hiệu Đồng5 silver badges13 bronze badges Tôi thực sự không phải là chuyên gia OOP, nhưng vì tôi hiểu rằng quá tải nó có nghĩa là khả năng của một phương pháp hành động khác nhau tùy thuộc vào các tham số mà nó nhận được là đầu vào. Điều này rất có thể với PHP, bạn không khai báo các loại đầu vào vì PHP không có gõ mạnh và tất cả quá tải được thực hiện trong thời gian chạy thay vì thời gian biên dịch. Đã trả lời ngày 30 tháng 1 năm 2010 lúc 22:59Jan 30, 2010 at 22:59
Matteo Rivamatteo RivaMatteo Riva 24.3K12 Huy hiệu vàng71 Huy hiệu bạc104 Huy hiệu đồng12 gold badges71 silver badges104 bronze badges 1 Có thể quá tải trong PHP không?PHP không hỗ trợ quá tải phương pháp.Trong trường hợp bạn chưa bao giờ nghe nói về quá tải phương thức, điều đó có nghĩa là ngôn ngữ có thể chọn một phương thức dựa trên các tham số bạn đang sử dụng để gọi nó.Điều này là có thể trong nhiều ngôn ngữ lập trình khác như Java, C ++.. In case you've never heard of method overloading, it means that the language can pick a method based on which parameters you're using to call it. This is possible in many other programming languages like Java, C++.
Có thể làm quá tải một hàm tạo?Các hàm tạo có thể bị quá tải theo cách tương tự như quá tải chức năng.Các hàm tạo quá tải có cùng tên (tên của lớp) nhưng số lượng đối số khác nhau.Tùy thuộc vào số lượng và loại đối số được truyền, hàm tạo tương ứng được gọi.. Overloaded constructors have the same name (name of the class) but the different number of arguments. Depending upon the number and type of arguments passed, the corresponding constructor is called.
Php có hỗ trợ hàm tạo không?PHP - Hàm __construct Một hàm tạo cho phép bạn khởi tạo các thuộc tính của một đối tượng khi tạo đối tượng.Nếu bạn tạo hàm __construct (), PHP sẽ tự động gọi hàm này khi bạn tạo một đối tượng từ một lớp.Lưu ý rằng hàm xây dựng bắt đầu với hai dấu gạch dưới (__)!A constructor allows you to initialize an object's properties upon creation of the object. If you create a __construct() function, PHP will automatically call this function when you create an object from a class. Notice that the construct function starts with two underscores (__)! |