Hướng dẫn how to create dynamic function name in php? - cách tạo tên hàm động trong php?
Tôi muốn đơn giản hóa việc tạo "các loại bài đăng tùy chỉnh" trong WordPress vì thật tẻ nhạt khi đi qua cùng một tập lệnh và thay đổi tất cả các phiên bản tên loại bài tùy chỉnh theo cách thủ công. Show Nó khá đơn giản để đạt được bằng cách tạo một biến có chứa tên CPT và sử dụng nó ở mọi nơi cần thiết. Bằng cách này, tất cả những gì tôi phải làm là khai báo biến ở phần đầu của tập lệnh và điều đó nên chăm sóc phần còn lại. Vấn đề duy nhất là, để làm cho nó hoạt động, tôi cũng cần tiền tố tên CPT trước mọi hàm bên trong tập lệnh và dường như sử dụng một biến trong tên hàm không dễ dàng hoặc thậm chí được đề xuất trong PHP. Vậy làm thế nào tôi có thể giải quyết điều này? Dưới đây là một ví dụ dưới đây để làm rõ:
Điều này gần như tốt và có thể được tiêu chuẩn hóa nếu chỉ tôi có thể đổi tên chức năng tự động để không phải viết từ "tin tức" trước nó nhưng thay vào đó sử dụng "tiền tố $". Điều này có thể tốt đẹp nhưng chỉ không hoạt động:
Phải đặt tên thủ công chức năng đánh bại mục đích ban đầu của nỗ lực của tôi (đặc biệt là khi tập lệnh nhúng hàng tá các chức năng như thế này). cách nào tốt nhất để làm việc này? Tái bút: Tôi đã googled và "stackoverflowed" rất nhiều về điều này nhưng không tìm thấy bất kỳ giải pháp làm việc nào phù hợp với nhu cầu của tôi và không tạo thông báo lỗi WordPress. Cảm ơn bạn. Động cơ gọi các hàm theo tên của họ, sử dụng đầu vào từ người dùng, là một giải pháp thay thế thuận tiện cho các câu lệnh cho phép gọi có điều kiện gọi các phần cụ thể trong mã của bạn. 938 lượt xem views Qua. JacobJacob Đã chỉnh sửa: 2021-02-14 05:322021-02-14 05:32 Thay vì dựa vào một loạt các câu lệnh IF, nó thường hữu ích hơn khi gọi một hàm hoặc phương thức một cách linh hoạt, vì nó có xu hướng làm cho mã của bạn dễ đọc hơn nhiều; Cách để làm điều đó là bằng cách sử dụng call_user_func để gọi một hàm theo tên. Một nơi mà điều này cực kỳ hữu ích là khi tạo ra một bộ định tuyến. Đối với những người không biết bộ định tuyến là gì, về cơ bản nó là một đoạn mã xử lý các URL trên một trang web; Bộ định tuyến chọn mã nào để gọi tùy thuộc vào URL được người dùng yêu cầu. Trong ví dụ sau, trước tiên tôi kiểm tra xem một hàm có thể gọi được không và nếu trường hợp, hàm được gọi; Nếu không, lỗi không tìm thấy được hiển thị cho người dùng: $requested_feature = 'frontpage'; if (is_callable('feature_' . $requested_feature)) { call_user_func('feature_' . $requested_feature, $feature_path); } else { http_response_code(404); echo 'Page not recognized...'; exit(); } Đây là một hình thức thực thi có điều kiện chỉ sử dụng các hàm hoặc phương thức thay vì các cấu trúc có điều kiện như nếu các câu lệnh và công tắc. Bạn sẽ viết các định nghĩa chức năng cho từng tính năng như bình thường: function feature_frontpage() { echo 'You have requested the blog'; exit(); } Mỗi chức năng mà bạn cho phép gọi theo cách này phải được đặt trước với tính năng_ để ngăn người dùng gọi các phần không mong muốn trong mã của bạn. Phương thức gọi độngVí dụ trên là thủ tục; Nếu bạn muốn làm điều này từ bối cảnh định hướng đối tượng, thay vào đó bạn sẽ thích như vậy: $features_object = new features(); if (is_callable([$features_object, 'feature_'.$requested_feature])) { call_user_func([$features_object, 'feature_'.$requested_feature], $feature_path); } else { http_response_code(404); echo 'Page not recognized...'; exit(); } Bản thân các chức năng được có tiền tố với "feature_" để chỉ ra tốt hơn rằng chúng được gọi tự động thông qua đầu vào người dùng. Để gọi hàm, người dùng có thể nhập tên hàm vào tham số URL được kiểm tra bởi ứng dụng; Điều này có thể trông như vậy: $features_object = new features(); $requested_feature = (!empty($_GET['feature_name'])) ? $_GET['feature_name'] : null; if (is_callable([$features_object, 'feature_'.$requested_feature])) { call_user_func([$features_object, 'feature_'.$requested_feature], $feature_path); } else { http_response_code(404); echo 'Page not recognized...'; exit(); } class features { public function feature_blog() { echo 'You have requested the blog'; exit(); } public function feature_frontpage() { echo 'You have requested the blog'; exit(); } } Điều này sau đó có thể được truy cập thông qua URL trong thanh địa chỉ trình duyệt: https://example.com/?feature_name=blog Nếu câu lệnh vs call_user_funcKhi một dự án phát triển lớn hơn, nó ngày càng trở nên quan trọng hơn khi bạn có thể mở rộng nó một cách linh hoạt mà không phải sửa đổi mã định tuyến; Sử dụng CALL_USER_FUNC linh hoạt hơn đáng kể so với việc sử dụng các câu lệnh IF để thực hiện công việc định tuyến của bạn. Tuy nhiên, điều này cũng đi kèm với những hạn chế. Thật không may, trong khi các định nghĩa hoặc chức năng của lớp dễ đọc hơn, việc sử dụng chúng để xử lý định tuyến vẫn bị giới hạn trong tính linh hoạt và khi chúng phát triển, chúng cũng sẽ trở nên khá cồng kềnh khi làm việc. Một sự thay thế thậm chí còn tốt hơn cho phương pháp này là giữ mã định tuyến của bạn trong các tệp bên ngoài, và sau đó tải nó một cách linh hoạt dựa trên tên tệp; Khái niệm này là như nhau, nhưng bạn chỉ sử dụng File_Exists để kiểm tra xem một tệp có tồn tại trước khi cố gắng bao gồm nó không, thay vì sử dụng is_callable. Liên kết
Thêm trong: Hướng dẫn PHP Hàm động PHP là gì?Hàm động gọi có thể gán tên hàm là chuỗi cho các biến và sau đó xử lý các biến này chính xác như chính bạn sẽ tự tên.It is possible to assign function names as strings to variables and then treat these variables exactly as you would the function name itself.
Cách chính xác để tạo chức năng trong PHP là gì?Để khai báo một loại cho trả về hàm, thêm một dấu hai chấm (:) và loại ngay trước khung xoăn mở ({) khi khai báo hàm.add a colon ( : ) and the type right before the opening curly ( { )bracket when declaring the function.
Các biến động trong PHP là gì?Biến động là mã PHP do người dùng xác định phải trả về giá trị chuỗi.Để tạo một biến động mới, hãy làm theo các bước sau: Chuyển đến Danh mục → Nguồn cấp sản phẩm nâng cao → Biến động.a user-defined php code that must return a string value. To create a new dynamic variable, follow these steps: Go to Catalog → Advanced Product Feeds → Dynamic Variables.
Hàm biến PHP là gì?Các chức năng biến ¶ Điều này có nghĩa là nếu một tên biến có dấu ngoặc đơn được thêm vào nó, PHP sẽ tìm kiếm một hàm có cùng tên với bất kỳ biến nào đánh giá và sẽ cố gắng thực hiện nó.Trong số những thứ khác, điều này có thể được sử dụng để thực hiện các cuộc gọi lại, bảng chức năng, v.v.if a variable name has parentheses appended to it, PHP will look for a function with the same name as whatever the variable evaluates to, and will attempt to execute it. Among other things, this can be used to implement callbacks, function tables, and so forth. |