• خطای 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 
    سلام
    برای دوستانی که هنوز این مشکلو دارن:

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

    موضوعات مرتبط با این موضوع...
    موضوع نویسنده پاسخ بازدید آخرین ارسال
      خطای Parse error: syntax error, unexpected 'if' (T_IF) azkio 1 89 18-05-2017 ساعت 13:29
    آخرین ارسال: SOFTAFZAR
    Note خطای Fatal error: Using $this when not in object context Daniel 0 2,056 06-12-2014 ساعت 15:55
    آخرین ارسال: Daniel
    Note خطای Fatal error: Can't use function return value in write context Daniel 0 506 16-09-2014 ساعت 18:38
    آخرین ارسال: Daniel
    Note خطای Fatal Error: Call to Undefined function XXX Daniel 0 512 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 799 18-08-2014 ساعت 17:43
    آخرین ارسال: Daniel
    Note خطای Warning: [function]: failed to open stream Daniel 0 419 31-07-2014 ساعت 18:50
    آخرین ارسال: Daniel
    Note خطای Fatal error: Call to a member function ... on a non-object Daniel 0 463 24-07-2014 ساعت 09:17
    آخرین ارسال: Daniel
    Note نحوه هندل کردن Fatal Error در php Daniel 0 491 06-07-2014 ساعت 21:28
    آخرین ارسال: Daniel
    Note خطای Parse error: syntax error, unexpected '?&gt;', expecting function (T_FUNCTION) mahbobe.prog 1 630 11-05-2014 ساعت 17:56
    آخرین ارسال: C0der
    Note رفع error mahbobe.prog 2 721 15-04-2014 ساعت 07:48
    آخرین ارسال: mahbobe.prog

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