วิธีการส่งค่า จาก Event หนึ่งไปยัง Event หนึ่ง ใน phpbb

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Ittichai_chupol
PHP VIP Members
PHP VIP Members
โพสต์: 5410
ลงทะเบียนเมื่อ: 19/09/2018 10:33 am

วิธีการส่งค่า จาก Event หนึ่งไปยัง Event หนึ่ง ใน phpbb

โพสต์ที่ยังไม่ได้อ่าน โดย Ittichai_chupol »

Event ในเว็บบอร์ด phpbb จะเป็นการเก็บค่าต่างๆไว้เพื่อจะนำกลับมาแสดงผลลัพธ์ หรือ เพื่อการกระทำอย่างได้อย่างหนึ่งตามบทบาทของแต่ละ Event โดย Event ของฝั่ง phpbb จะเป็นการเก็บค่าเพื่อใช้งานสำหรับแสดงผล ซึงจะมีการทำหลายรอบตามจำนวนของข้อมูล แต่บาง Event ก็จะทำหน้าที่ในการเรียกข้อมูลซึ่งทำงานเพียงรอบเดียว โดยถ้าหากผู้ที่พัฒนา ส่วนขยายโดยใช้ Event ของเว็บบอร์ด phpbb เข้ามาเพื่อปรับแก้ไขข้อมูลแล้ว ก็จำเป็นที่จะต้องคำนึกถึงผลกระทบต่อ ส่วนนี้ด้วย อย่างเช่นว่า ถ้าหากต้องการปรับแก้ไขข้อมูลของโพสต์ ที่มีจำนวนมาก แล้วมาปรับในส่วนของ Event เป้นส่วนแสดง ก็จำทำเกิดการทำงานในหลายๆรอบ โดยเฉาพะกรณีที่มีการ Query ด้วยจะทำให้เว็บไซต์ทำงานช้างลง แต่ถ้าหากนำไปปรับแก้ไข กับ Event ที่เป็นส่วนของการเก็บข้อมูล ก็จะทำให้ลดขั้นตอนจำนวนรอบลงไปได้อย่างมาก โดยวิธีการทำแบบนี้ได้ ก็คือการใช้งาน ฟังชั่น define() เข้ามาช่วยนั้นเอง

1.ตัวอย่างส่วนโคดที่จะทำการสร้างค่าให้กับ define()

โค้ด: เลือกทั้งหมด


    public function memberlist_memberrow_before($event) {
                    $sql_ray = array(
                        'SELECT' => 'DISTINCT count(p.post_id) as count_post ,p.user_id,username ',
                        'FROM' => array(
                            $this->table_prefix . 'm_anonymous' => 'p',
                        ),
                        'LEFT_JOIN' => array(
                            array(
                                'FROM' => array(USERS_TABLE => 'u'),
                                'ON' => 'p.user_id = u.user_id',
                            )),
                        'WHERE' => ' p.user_id  IN  (' . implode(',', $user_id_s) . ')' . ' GROUP BY p.user_id ',
                    );
                    $sql = $this->db->sql_build_query('SELECT', $sql_ray);
                    $result = $this->db->sql_query($sql);
                    $user_post = array();
                    while ($row = $this->db->sql_fetchrow($result)) {
                        $user_post[] = $row;
                    }
                    $this->db->sql_freeresult($result);
                    define('USER_DATA', serialize($user_post));//ส่วนนี้จะทำการส่งตัวแปรที่ได้จาก Event ไปใช้งาน
}
2.ฝั้งรับค่าเพื่อนำ่าไปใช้ นั้นจะต้องเป็น Event ที่มีส่วนร่วมกับกับ Event ข้างต้นต้น ในตัวอย่างก็คือ memberlist_prepare_profile_data

โค้ด: เลือกทั้งหมด

 
    public function memberlist_prepare_profile_data($event) {
   $user_data = @unserialize(constant('USER_DATA'));   //ส่วนนี้จะทำการสร้างตัวแปรที่ได้จาก Event มาใช้งาน
   }
   

บทความที่เกี่ยวข้อง
การสร้าง Extension ใน phpbb
การสร้าง controller สำหรับ phpbb
Event listenner - เขียน Extension บน phpBB 3.1
ขอให้วันนี้เป็นวันที่ดี
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 41