Callback (function) ใน PHP

วันนี้ผมเกิดอยากใช้ 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"); // 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"));

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

One thought on “Callback (function) ใน PHP

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s