خطای Fatal error: Call to a member function x() on a non-object
#1
Note 
سلام وقت بخیر
داخل صفحه register از کلاس یوزر استفاده میکنم ولی این error رو میگیره
صفحه register
کد php:
    include ('classUser.php');

    
$userClass = new user();
    
$userClass -> setPass ($_POST['password']) ;

    if (isset(
$_POST['submit']) ) 
    {
    
$userClass -> $value = array ( $_POST['userName'] , $_POST['password'] , $_POST['confirmPassword'] , $_POST['firstName'] , $_POST['lastName'] ) ;
    
$userClass -> register$_POST['userName'] , $_POST['password'] , $_POST['confirmPassword'] , $_POST['firstName'] , $_POST['lastName']);
    } 

بخشی از classUser
کد php:
include( '../ValidFormClass/ValidFormClass.php' ) ;
include( 
'../database-adapter-2013-10-29/DbAdapter.php' ) ;
$validForm = new ValidateForm() ;
//$dataBase = new DBclass() ;
        


class user{
    var 
$user_id ;
    var 
$user_pass ;
    var 
$first_name ;
    var 
$last_name ;
    var 
$user_passConf ;
    var 
$value ;
    var 
$main_page;

    function 
setPass($password
    {
        if ( 
$validForm -> IsPass$password ) )
        {
            if( 
$validForm -> check_new_password $userName $confirmPassword ) )
            {
                
$this -> user_pass $password ;
            }
        }
    }


Notice: Undefined variable: validForm in C:\xampp\htdocs\classUser1\classUser.php on line 28
Fatal error: Call to a member function IsPass() on a non-object in C:\xampp\htdocs\classUser1\classUser.php on line 28

آخرین ویرایش: 16-05-2014 ساعت 17:58، توسط Daniel
پاسخ
#2
Note 
سلام
متغیر validform$ رو باید داخل کلاس تعریف کنید:
کد php:
<?php
include( '../ValidFormClass/ValidFormClass.php' ) ;
include( 
'../database-adapter-2013-10-29/DbAdapter.php' ) ;
//$dataBase = new DBclass() ;
        


class user{
    var 
$user_id ;
    var 
$user_pass ;
    var 
$first_name ;
    var 
$last_name ;
    var 
$user_passConf ;
    var 
$value ;
    var 
$main_page;

    function 
setPass($password
    {
        
$validForm = new ValidateForm() ;
        if ( 
$validForm -> IsPass$password ) )
        {
            if( 
$validForm -> check_new_password $userName $confirmPassword ) )
            {
                
$this -> user_pass $password ;
            }
        }
    }


پاسخ
#3
Note 
سلام
یعنی باید داخل هر متدی که ازین کلاس استفاده میشه بذارم ؟ چون بیرون متد گذاشتم error گرفت .
داخل متد گذاشتم او ن error رفع میشه ولی این error رو میگیره
Fatal error: Call to undefined method ValidateForm::IsEmpty() in C:\xampp\htdocs\validFormClass\validFormClass.php on line 20

پاسخ
#4
Note 
mahbobe.prog نوشته است:یعنی باید داخل هر متدی که ازین کلاس استفاده میشه بذارم ؟ چون بیرون متد گذاشتم error گرفت .
داخل متد گذاشتم او ن error رفع میشه ولی این error رو میگیره
Fatal error: Call to undefined method ValidateForm::IsEmpty() in C:\xampp\htdocs\validFormClass\validFormClass.php on line 20

سلام
باید یه متد برای اینکار تعریف کنید و بعدا این متد رو فراخوانی کنید. البته، در صورتی که متد جادویی construct__ وجود نداشته باشه.
کدهای داخل متد جاودیی construct__ موقع ساخت نمونه جدید از کلاس بصورت اتوماتیک اجرا میشن.

کد php:
<?php
include( '../ValidFormClass/ValidFormClass.php' ) ;
include( 
'../database-adapter-2013-10-29/DbAdapter.php' ) ;
//$dataBase = new DBclass() ;
        

class user{
    var 
$user_id ;
    var 
$user_pass ;
    var 
$first_name ;
    var 
$last_name ;
    var 
$user_passConf ;
    var 
$value ;
    var 
$main_page;
    var 
$validForm// <--- new property

    
function __construct(){
    
        
$this->validForm = new ValidateForm() ;
    }
    
    function 
setPass($password
    {
        
        if ( 
$this->validForm-> IsPass$password ) )
        {
            if( 
$this->validForm -> check_new_password $userName $confirmPassword ) )
            {
                
$this->user_pass $password ;
            }
        }
    }



خطایی که دریافت میکنید بخاطر اینه که متد IsEmpty داخل کلاستون وجود نداره.

نکته: بهتره برای تعریف پراپرتی ها از کلمه کلیدی var استفاده نکنید . از var زمانی استفاده میشد که public،protected و private وجود نداشتن(در php4). الان بجای var میتونید از public استفاده کنید که در این صورت پراپرتی ها در خارج از کلاس هم قابل دسترس ان. [توضیحات بیشتر در php.net]

پاسخ
#5
Note 
سلام
ممنون از راهنماییتون
کلاس validForm رو چک کردم متدIsEmpty داخلش بود
به هر متدی که داخل این کلاس هس error Fatal error: Call to a member function IsPass() on a non-object in C:\xampp\htdocs\classUser1\classUser.php on line 28 رو میگیره با این تفاوت که اسم متد عوض میشه
ممنون میشم مثل همیشه راهنماییم کنین

پاسخ
#6
Note 
شما باز دارید همون ارور اولی رو میگید که!
کلاس validateform و classuser رو بطور کامل قرار بدید
در ضمن این کد رو تو متد قرار بدید و اجرا کنید و نتیجه رو بذارید
کد php:
print_rget_class_methods($this->validForm) ); 

پاسخ
#7
Note 
سلام
ممنون مشکلم رفع شدConfusedmilingsmiley:

پاسخ
#8
Note 
سلام
برای دوستانی که هنوز این مشکلو دارن:

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note خطای Fatal error: Using $this when not in object context Daniel 0 1,214 06-12-2014 ساعت 15:55
آخرین ارسال: Daniel
Note خطای Fatal error: Can't use function return value in write context Daniel 0 407 16-09-2014 ساعت 18:38
آخرین ارسال: Daniel
Note خطای Fatal Error: Call to Undefined function XXX Daniel 0 424 28-08-2014 ساعت 16:04
آخرین ارسال: Daniel
Note خطای MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL Daniel 0 399 18-08-2014 ساعت 17:43
آخرین ارسال: Daniel
Note خطای Warning: [function]: failed to open stream Daniel 0 323 31-07-2014 ساعت 18:50
آخرین ارسال: Daniel
Note خطای Fatal error: Call to a member function ... on a non-object Daniel 0 378 24-07-2014 ساعت 09:17
آخرین ارسال: Daniel
Note نحوه هندل کردن Fatal Error در php Daniel 0 381 06-07-2014 ساعت 21:28
آخرین ارسال: Daniel
Note خطای Parse error: syntax error, unexpected '?&gt;', expecting function (T_FUNCTION) mahbobe.prog 1 509 11-05-2014 ساعت 17:56
آخرین ارسال: C0der
Note رفع error mahbobe.prog 2 551 15-04-2014 ساعت 07:48
آخرین ارسال: mahbobe.prog
Note خطای عجیب درsyntax error PHP Php1 1 503 13-09-2013 ساعت 16:34
آخرین ارسال: Daniel

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