PDA

View Full Version : سوال: سلام ایراد این کد چیه



Mohsen BS
سه شنبه 03 فروردین 1389, 09:08 صبح
با سلام
ایراد این کد چیه
خطا می ده که کلاس DataAccess ساخته نشده ولی تو کانستراکتورش ساخته می شه
ممنون



<?php
include_once 'DataAccess.php';

class Controler{

private $DA;

public function Controler()
{
$DA = new DataAccess();
}


public function getDescendedMenus($id)
{
// $DA = new DataAccess();
$this->Controler();
$DA->connect();
$temp = $DA->query('select MTile from menu where PID='.$id);
// $temp = array('One','Two','Three'); // test purposes
foreach($temp as $Subm)
{
echo '<li>'.$Subm[0].'</li>';
}
$DA->disconnect();
}
public function getContent($Id)
{
echo 'dsff '.${id};
}
}
?>


خطا هم اینه


Fatal error: Call to a member function connect() on a non-object in C:\XAMPP\xampp\htdocs\Aptana Workspace\nar\Controler.php on line 18

contestant
سه شنبه 03 فروردین 1389, 12:46 عصر
شاید به این خاطره که شما متغیره DA رو به صورت:

private $DA;
تعریف کردین و نمیتونید توی تابعتون ازش استفاده کنید.

Mohsen BS
سه شنبه 03 فروردین 1389, 22:43 عصر
شاید به این خاطره که شما متغیره DA رو به صورت:

private $DA;تعریف کردین و نمیتونید توی تابعتون ازش استفاده کنید.

چگونه پس باید تعریف کنم و چرا؟:عصبانی++:

امیـرحسین
چهارشنبه 04 فروردین 1389, 00:02 صبح
public function Controler()
{
$this->DA = new DataAccess();
}


public function getDescendedMenus($id)
{
$this->Controler();
$this->DA->connect();
$temp = $this->DA->query('select MTile from menu where PID='.$id);
// $temp = array('One','Two','Three'); // test purposes
foreach($temp as $Subm)
{
echo '<li>'.$Subm[0].'</li>';
}
$this->DA->disconnect();
}

contestant
چهارشنبه 04 فروردین 1389, 00:16 صبح
فکر کنم اگر به صورت global در داخل خود تابعتون تعریف کنید مشکلتون حل بشه و یا اینکه همونطور که آقای امیر حسین عرض کردن از اشاره گر داخل کلاس ( همون $this ) برای دسترسی به خصیصه داخل کلاس استفاده کنید.