• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ایجاد آبجکت در یک متغیر کلاس
#1
سلام

نمی دونم عنوان درست هست یا نه . دیگه نمی دونستم عنوان رو چی بذارم .
من یک کلاس به نام Router ایجاد کردم و یک متغیر پابلیک به نام object توش تعریف کردم . وقتی یکی از توابع این کلاس به نام getComponent رو فراخوانی می کنم یک آبجکت توی این متغیر ایجاد میشه . اما نمی تونم ازش استفاده بکنم .
کد پی‌اچ‌پی:
<?php
$Router 
= new Router;
$Router $Router->getComponent();
var_dump($Router->object);
?>
این هم خروجی :
کد:
Notice: Trying to get property of non-object in D:\xampp\htdocs\Projects\pardazeshgar\index.php on line 36
NULL
Facebook
EMail: Mohsen [@] EDadkhah [.] ir
  پاسخ
تشکر شده توسط :
#2
حداقل این کلاس روتر رو قرار می دادیم تا ببینیم چه کار کردید
  پاسخ
تشکر شده توسط :
#3
کد پی‌اچ‌پی:
class Router{
    public 
$component 'content';
    public 
$action 'display';
    public 
$object;
    public function 
Router() {
        
header('Content-Type: text/html; charset='.DB::$charset);
        if(isset(
$_REQUEST['component'])) {
            
$this->component $_REQUEST['component'];
            if(isset(
$_REQUEST['action'])) {
                
$this->action $_REQUEST['action'];
            }
        }
    }
    
    public function 
getComponent() {
        global 
$Template;
        
$getComponentListSql 'SELECT * From '.DB::$name.'.'.DB::$tablePerfix.'components WHERE '.DB::$tablePerfix.'components.name=\''.$this->component.'\' and '.DB::$tablePerfix.'components.active=\'1\'';
        
$query mysql_query($getComponentListSql) or die(mysql_error());
        
$result mysql_fetch_assoc($query);
        if(
$result == false) {
            
$Template->assign('errors''کامپوننت مورد نظر شما وجود ندارد.');
            
$Template->display('error.tpl');
            die();
        }
        else {
            
ALoader::load('components.'.$this->component.'.controller');
            
$component ucfirst($this->component).'Controller';
            
$this->object = new $component;
        }
    }

Facebook
EMail: Mohsen [@] EDadkhah [.] ir
  پاسخ
تشکر شده توسط :
#4
کد پی‌اچ‌پی:
<?php
$Router 
= new Router;
$Router $Router->getComponent();
var_dump($Router->object);
?>
توی خط یک : از کلاس Router یک شی ساخته می شه و در متغییر router ذخیره می شه
توی خط دو : خروجی متد getComponent در متغییر Router قرار داده شده
از اونجا که این متد هیچ خروجی نداره پس مقدار NULL در شی ذخیره شده ( بماند که هرچیزه دیگه هم برگشت می داد فرقی نمی کرد! )
در واقع شما در خط 2 شی تون رو از بین بردید!!!
نیازی نیست که خروجی متد رو در متغییر ذخیره کنید!
کد پی‌اچ‌پی:
<?php
$router 
= new Router;
$router->getComponent();
var_dump($Router->object);
?>
  پاسخ
تشکر شده توسط : mohsened Padideh


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان