वीर

6 มิถุนายน 2008

Callback (function) ใน PHP

Filed under: Uncategorized — Tags: , , , , , , — वीर @ 14:26

วันนี้ผมเกิดอยากใช้ array_filter ขึ้นมามันต้องเรียก callback (function) ในกรณีปกติที่เป็น callback function ลอยๆ ก็ทำได้ไม่ยากเช่น


function isNotEmptyLine($line) {
     return !preg_match("/^\s*$/");
}

$lines = array_filter($lines, "isNotEmptyLine");

เท่านี้ก็เป็นอันใช้ได้ … แต่ถ้า isNotEmptyLine ดันเข้าไปอยู่ใน class หละ


class SomeThingReader {
     function isNotEmptyLine($line) {
          return !preg_match("/^\s*$/");
     }

     function read($lines) {
          $lines = array_filter($lines, "isNotEmptyLine"); // < -- เจ๊ง!!!
          // $lines = array_filter($lines, "this->isNotEmptyLine"); ก็เจ๊ง
          // $lines = array_filter($lines, "SomeThingReader->isNotEmptyLine"); ก็เจ๊งอยู่ดี
     }
}

พอเข้าไปอ่านดีที่ http://www.php.net/manual/en/function.array-filter.php ใน comment เลยทีเดียว ก็พบว่าทำแบบนี้


$lines = array_filter($lines, array($this, "isNotEmptyLine")); 

อาจจะดูแปลกๆ แต่ก็ใช้ได้นะ :-P.

มี 1 ความคิดเห็น »

  1. ทำลังหาอยู่ครับ ขอบคุณครับ

    Comment โดย phet — 19 มิถุนายน 2009 @ 09:57


RSS feed สำหรับความคิดเห็นในกระทู้นี้ TrackBack URI

เขียนความคิดเห็นของคุณ

บลอกที่ WordPress.com .