แก้ไข “call_user_func_array() expects parameter 1 to be a valid callback, non-static method XXX:init() should not be called statically” ใน plugin “Jetpack for WordPress”
จากปัญหา
The following errors were reported: call_user_func_array() expects parameter 1 to be a valid callback, non-static method xxx::init() should not be called statically
ใน plugin “Jetpack for WordPress” ซึ่งเกิดจากการเขียนโค้ดไม่ตรงกับ Strict standards ใน PHP ที่อยู่ๆ ก็มีการเขียนไป call ตัว static method ใน method ที่ไม่ใช่ static ทำให้เกิดข้อผิดพลาดดังกล่าว
ปัญหานี้จะเกิดกับ Class ของ module ใน plugins “Jetpack for WordPress” ทั้งหมด 4 ตัว (ณ ตอนนี้ที่ไล่หาดู) โดยมี Class ดังต่อไปนี้
- Jetpack_Notifications
- Jetpack_Post_By_Email
- Jetpack_Subscriptions
- Jetpack_Likes
การแก้ไขก็ง่ายๆ ไม่มีอะไรซับซ้อน (ถ้าเข้าใจ)
โดยเพิ่ม “public static” ไปหน้า function &init() ให้เป็น public static function &init() ในไฟล์ subscriptions.php, post-by-email.php, notes.php และ likes.php ซึ่งอยู่ใน wp-content/plugins/jetpack/modules
เพียงแค่นี้ก็จบปัญหาครับ
Slide : PHP 5 OOP By Ilia Alshanetsky
ไม่มีอะไรมากสำหรับ entry นี้ พอดีว่าเจอจาก Scribd เลยขอเอามาเปะแล้วกันครับ
เป็น Slide จากงาน International PHP Conference 2005 ครับผม
โดยจากที่นั่งอ่าน นี่อธิบายได้ดีมากเลยหล่ะ โดยมีส่วนเปรียบเทียบกับของเก่าอย่าง PHP 4 แล้วยังบอกอีกด้วยว่า การใช้รูปแบบเก่า ๆ จะเกิดอะไรขึ้นบ้าง ถือว่าละเอียดมาก ๆ Slide นึงเลยครับ มีไฟล์เสียงด้่วยนะครับ ลองเข้าไปฟังต่อใน Scribd เอาแล้วกันครับ ;P