Using $ this when not in object context - I am using the latest php and mysql

This is user.php:   

    include("databse.php");//retrieving successfully first name and lastname from databse file into user.php
    class user
    {
      public $first_name;
      public $last_name;
      public static function full_name()
      {
          if(isset($this->first_name) && isset($this->last_name))
          {
            return $this->first_name . " " . $this->last_name;

          }
          else
           {
                return "";
           }
       }
    }

      

Other php files, index.php:

   include(databse.php);
   include(user.php);
    $record = user::find_by_id(1);
    $object = new user();
    $object->id = $record['id'];
    $object->username = $record['username'];
    $object->password = $record['password'];
    $object->first_name = $record['first_name'];
    $object->last_name = $record['last_name'];
    // echo   $object->full_name();
    echo $object->id;// successfully print the id
    echo $object->username;//success fully print the username
    echo->$object->full_name();//**ERROR:Using $this when not in object context**

?>

      

+2


a source to share


3 answers


You cannot use $this

in a static function. Use insteadself::



+7


a source


Make it full_name

non-static :

public function full_name() {}

      

You cannot access instance variables from a static method, but that is exactly what you are trying to do.



If you use self

instead $this

, you also need to declare statics $first_name

and $last_name

.

I don't even understand why you are declaring this method as static

in the first place. It's an instance method by all means.

+3


a source


Check the last line of your index.php. echo->$object->full_name()

not valid. Use instead echo $object->full_name()

.

Also declare full_name()

as non-static.

0


a source







All Articles