Wordpress và lập trình hướng sự kiện - nó là về cái gì?


7

Tôi muốn nói rõ rằng điều này không có ý định làm sống lại cuộc thảo luận về lập trình chức năng / thủ tục so với lập trình hướng đối tượng. Có rất nhiều điều nói về điều đó, trên WPSE và trên mạng.

Nhưng cách đây một thời gian, tôi đang đọc một số cuộc thảo luận về nền tảng lập trình của Wordpress và tôi đã đọc một cái gì đó - tôi phải viết lại bởi vì không may là tôi đã không đánh dấu nó vào thời điểm đó - đại khái như thế này:

Một trong những điều hấp dẫn khi sử dụng Wordpress là chúng cũng hoạt động dựa trên mô hình lập trình hướng sự kiện .

Từ những gì tôi hiểu lập trình hướng sự kiện trong ngữ cảnh này có khá nhiều từ đồng nghĩa với lập trình tín hiệu hoặc dataflow . Hơn nữa - rất có thể là quá đơn giản hóa nó rất nhiều - có thể đặc điểm rõ ràng chính là việc sử dụng các hook - hành độngbộ lọc - làm linchpin cho phương thức.

Càng xa càng tốt. Có vẻ đủ dễ dàng, nhưng tôi không đến từ nền tảng khoa học máy tính, vì vậy tôi khá chắc chắn có nhiều điều để nói. Tôi thực sự quan tâm đến một số đầu vào, như: Nó thực sự là về cái gì hoặc những gì ở trên đã nói khá nhiều về nó? Có phải là một mô hình thêm? Làm thế nào nó liên quan đến những người khác? Đó là một nguyên tắc cốt lõi hay chỉ là một bổ sung?

Những điều đó chỉ nằm trên đỉnh đầu của tôi, rõ ràng vi phạm các quy tắc, bằng cách không hỏi một câu hỏi duy nhất có một câu trả lời riêng biệt, nhưng có lẽ điều này sẽ được tha thứ một lần.

Câu trả lời:


9

Trước hết cho phép làm rõ paradigmnghĩa của từ trong lập trình. Điều đó có nghĩa là chúng tôi đi đến một thỏa thuận rằng chúng tôi sẽ xử lý một số trường hợp / vấn đề / tình huống nhất định theo một cách nhất định.

Chẳng hạn, chúng ta đi đến thỏa thuận rằng hành khách đi bộ nên băng qua đường trên đèn xanh ở nước ta. Đây là mô hình ánh sáng xanh của chúng tôi . Ở một quốc gia khác có thể là một thỏa thuận để vượt qua một con đường trên một bàn tay lớn lên. Đó là mô hình bàn tay giơ lên của họ . Chúng không liên quan với nhau, chúng chỉ tồn tại và hành khách đi bộ có thể sử dụng mô hình hoặc tạo đường băng qua đường riêng của mình bất cứ khi nào tôi muốn mô hình.

Tình huống tương tự là trong lập trình. Paradigm chỉ là một bộ quy tắc hoặc thỏa thuận để phát triển một ứng dụng theo một cách nhất định hoặc sử dụng một cách tiếp cận nhất định. Chỉ có bấy nhiêu thôi.

Ok, quay lại với WordPress và mô hình hướng sự kiện. Mô hình này chỉ là một phần của toàn bộ hệ thống WordPress. Mô hình này đặt ra một loạt các quy tắc / thỏa thuận về cách mở rộng lõi bằng các tiện ích mở rộng của bên thứ 3, trong đó các móc cho hành động và bộ lọc là cách tiếp cận linchpin. Hãy chú ý rằng mô hình này chỉ bao gồm các trường hợp / vấn đề / tình huống mở rộng và đây không chỉ là mô hình được sử dụng bởi WordPress, mà là một trong những vấn đề cốt lõi.

Đó là tất cả. Tất nhiên bạn có thể sử dụng riêng của bạn viết một plugin / chủ đề như thế nào tôi muốn mô hình và hài lòng với nó :)


2
Cảm ơn, tôi yêu cái nhìn sâu sắc về thuật ngữ mô hình! Cá nhân tôi nhận thức rõ về điều đó, vì tôi đã viết luận văn thạc sĩ về lý thuyết lĩnh vực tri thức, nhận thức luận, lịch sử khoa học, v.v. Hãy tin tôi, những gì tôi viết không hấp dẫn như lời giải thích của bạn. Tôi chắc chắn những gì bạn viết sẽ giúp mọi người hiểu rõ hơn.
Nicolai

Không có gì. Tôi hy vọng rằng nó sẽ giúp quá.
Eugene Manuilov

Chỉ cần phá vỡ nó, như là một phần của Wordpress Systemkhía cạnh event-driven programmingcó thể được hiểu là paradigm of expansibility. Tôi muốn nói trước tiên và quan trọng nhất là để người khác sử dụng lõi wordpress. Và nếu người ta sẽ không viết một plugin với "cách tôi muốn" -paradigm, nhưng thay vào đó sẽ tuân theo paradigm of expansibility, thì nó cũng có thể được sử dụng như một bộ quy tắc cơ bản để tạo ra các plugin / chủ đề mở rộng.
Nicolai

2

Tôi nghĩ rằng với mô hình hướng sự kiện , người viết bài dự định mô hình Observer .

Và điều đó trong WordPress được xử lý thông qua Plugins Api . Tôi không nghĩ có nhiều điều để nói.


Câu đầu tiên của bạn hơi khó hiểu, nhưng với bài viết bạn liên kết tôi đang nhận được những gì bạn đang hướng tới. Tôi nhận thức rõ về Plugins APIđiều này, trong bối cảnh này có thể đáng chú ý để chỉ ra sự khác biệt giữa FiltersActions.
Nicolai

Chỉ cần làm rõ, trong khi người quan sát điều khiển sự kiện, nó không hoàn toàn phù hợp với bản chất điều khiển của Wordpress. Chủ yếu là vì sử dụng mô hình quan sát mà hai đối tượng - người quan sát và chủ thể - biết và giao tiếp với nhau. Đây không phải là trường hợp khi sử dụng hook để sử dụng mô hình hướng sự kiện như wordpress đã triển khai nó, trong trường hợp này chỉ xảy ra việc chặn và không có giao tiếp đối ứng nào xảy ra.
Nicolai

2
@ialocin Observer nó chỉ là một mô hình trừu tượng có thể được thực hiện là những cách khác nhau. Nói một cách trừu tượng, Chủ thể thông báo cho Người quan sát và không bắt buộc Người quan sát giao tiếp với Chủ thể . Sau WP đó, không thực sự triển khai mẫu đó, chỉ bắt chước nó: trong WP không tồn tại bất kỳ đối tượng Chủ đề nào , cũng không phải đối tượng Người quan sát : mọi thứ đều được xử lý bằng các biến toàn cục ...
gmazzap

@ialocin Về nhận xét đầu tiên của bạn, trong trường hợp cụ thể này, không có sự khác biệt giữa các hành động và bộ lọc, cả hai sự kiện kích hoạt: cố gắng add_filter('the_title', 'test'); function test($t) { error_log('foo'); return $t; }. Nó hoàn toàn hợp pháp và sự kiện được kích hoạt ngay cả khi sử dụng bộ lọc.
gmazzap

Cảm ơn đã làm rõ Mẫu quan sát hơn nữa. Tôi đã không cố nói đó là cách duy nhất để thực hiện nó. Tôi chỉ cố gắng giải thích rằng sự kiện mặt đất chung được thúc đẩy không có nghĩa là nó được triển khai theo cách tương tự trong wordpress, nhưng nhận xét của bạn làm rõ điều đó rất tốt. Về bình luận đầu tiên, cảm ơn vì đã làm cho rõ ràng quá. Bạn đúng - tất nhiên. Tôi đã suy nghĩ nhiều hơn về những người không biết gì về API Plugins và cách làm cho điểm trong câu trả lời của bạn hợp lý hơn và / hoặc có thể truy cập được đối với họ.
Nicolai


1

Wordpress là hướng sự kiện vì những hạn chế của ngôn ngữ được viết, không phải vì nó được thiết kế theo bất kỳ cách nào.

Các máy chủ web phổ biến nhất là hướng sự kiện và PHP ra khỏi hộp có rất ít tiện ích (không có?) Để hành xử theo bất kỳ cách nào khác. Vì wordpress phụ thuộc vào PHP, nên nó không thể là gì khác.

Phần PHP của các plugin và chủ đề WordPress OTOH phải được thiết kế để trở thành sự kiện được điều khiển bởi "sự kiện" "được gửi" theo lõi. Mã JS cũng được điều khiển theo sự kiện, nhưng các sự kiện hầu như chỉ được kích hoạt bởi người dùng thực tế (mặc dù một số mã JS wordpress cũng sẽ trừu tượng hóa nó và nâng cao các sự kiện của chính nó).


Ngay cả với PHP cũng có thể thực hiện các mẫu và thiết kế khác nhau, vì vậy không phải tất cả về WordPress đều dựa trên PHP, nhưng tất nhiên sẽ có các quy tắc cơ bản đi kèm với cơ sở.
Nicolai

@Nicolai ok, có thể là có thể, và tôi đã không hoàn toàn chính xác, nhưng apache + PHP hướng đến sự kiện và phản ứng của nó. Nếu tập lệnh không phải là "luôn luôn chạy", giả sử như các máy chủ web dựa trên java, sẽ khó thực hiện bất cứ điều gì khác.
Đánh dấu Kaplun
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.