2012-08-01 38 views
6

Tôi đang học về mô-đun trực tuyến và có vẻ như các mô-đun trong js và các lớp trong php rất giống nhau. Cả hai nhóm hoạt động cùng nhau để dễ hiểu mã hóa hơn. Các hàm có thể được khai báo trong cả hai và được công khai hoặc riêng tư. Chúng tương tự như thế nào khi sử dụng và chúng khác nhau như thế nào?Sự khác biệt giữa Mô-đun trong js và Lớp học trong php là gì?

+1

Không phải là một câu trả lời trực tiếp, nhưng các lớp học không chỉ để làm chức năng dễ hiểu hơn. Mục đích chính của chúng là trừu tượng (ẩn chi tiết thực hiện), đóng gói (chỉ cho phép một số hành động nhất định cho từng đối tượng), và mô đun (làm cho mỗi lớp dễ dàng di chuyển). – Palladium

Trả lời

2

module Javascript của cung cấp một số tính năng tốt đẹp như đóng gói, nhà nước tư nhân và thậm chí thừa kế từ các module khác. Trong khi chúng cung cấp một số tính năng của các lớp, như trong PHP, chúng không có. Họ cố gắng xây dựng trên functonality Javascript hiện có để mô phỏng các lớp, do đó tại sao sự nhầm lẫn. tức là chúng được được thiết kế để trông giống như lớp học.

module Javascript của là trường hợp của một chức năng vô danh được gán cho một biến. Do đó họ có tất cả các tính năng của một chức năng mà mã của họ được thực hiện trên xuống dưới, họ có và đôi khi sử dụng một tuyên bố trở (trong lớp học PHP không báo cáo có thể chạy trực tiếp ngoài định nghĩa lĩnh vực và phân công) và họ thậm chí có truy cập vào các biến toàn cầu. Trong PHP, mặt khác một lớp, hay đúng hơn là các phương thức của nó, không thể truy cập một biến không nằm trong chính lớp đó. Để truy cập vào các biến toàn cục, một phương thức lớp hoặc hàm tĩnh phải gọi biến đó một cách rõ ràng, tức là theo thứ tự global $a để nhập nó. Trong các mô-đun js, tất cả các vars toàn cầu đều có thể truy cập được nhưng đôi khi người ta chọn giải thích việc nhập khẩu chúng cho mã neater (function(a){})(imported);

Một vấn đề quan trọng khác là trừu tượng dữ liệu. Trong khi các mô-đun js cung cấp các trạng thái riêng cho các trường, các lớp của PHP, giống như C++, java, python, vv, cung cấp bảo mật hơn cho các thuộc tính. Nó cho phép các lớp cơ sở sử dụng các từ khóa abstract classinterface theo đó các phương pháp và thuộc tính lớp học chỉ được xác định hoặc có cấu trúc nhưng không được sử dụng.

lớp PHP cũng có constructor và destructor, được gọi khi đối tượng lớp được khởi tạo và trên đề cập đến cuối cùng sử dụng để tiêu diệt các đối tượng. Cấp, bạn có thể tạo các hàm trong các mô-đun để chạy khi bạn muốn, trong PHP, mặt khác, các hàm trong phương thức chỉ được thực thi khi chúng được gọi bởi đối tượng, lớp hoặc các hàm khác.

Trong lớp có chức năng tĩnh, chúng có thể được gọi mà không hề có một đối tượng của lớp và chạy độc lập của các đối tượng, mặt khác trong js, tất cả mọi thứ là một đối tượng; đánh bại điểm của các hàm tĩnh.

Chúng tương tự nhau: cả hai đều có thừa kế, nơi bạn có thể mở rộng mô-đun hiện có bằng mô-đun mới và trong PHP, bạn có thể sử dụng extends để kế thừa từ lớp cha. Cả hai đều có trạng thái dữ liệu riêng tư ngăn chặn truy cập bên ngoài, cả hai nhóm và gói dữ liệu và phương pháp, và cả hai đều tuyệt vời khi sử dụng đúng cách.

Các vấn đề liên quan