natty

[PHP] สิ่งหนึ่งที่ทำให้เกิด Call to a member function on a non-object

In PHP on November 19, 2008 at 4:45 pm

วันนี้ แก้ error โง่ๆ ไปพักหนึ่ง ด้วยความมึน ตอน run PHP แล้วเกิด คือ พยายามจะ new object แต่ว่าไม่สามารถจะ new ได้ และหลังจาก new ก็ไปใช้ method ของมัน ทำให้มันบอกว่า ใช้ function จากตัวที่ไม่เป็น object ไม่ได้ อย่างเช่น


$test = new AR(new Ds());

$test->getDS();

มันจะเรียก getDS(); ไม่ได้ เพราะ $test ยังเป็น null

มาเล่น PhotoHunt กัน ให้ดูว่า class ของ Ds ทำอะไร


var $dsStrategy;
public function _construct (iDSStrategy $dsStrategy){
$this->dsStrategy = $dsStrategy;
}
public  function getValForCreditFromCore(){
$this->dsStrategy->getValForCreditFromCore();
} 

นี่แหละ ทำให้เกิด Call to a member function on a non-object งงเลยใช่ไหมว่าทำไม

เหตุผลสำหรับ code นี้ เพราะที่ใส่ underscore หน้า constructor ไปอันเดียว – -”

ที่ถูกต้องเป็น

public function __construct (iDSStrategy $dsStrategy)
Advertisements

Leave a Reply

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 / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: