Johndave Decano
Johndave Decano

Reputation: 2113

When and How to make class variables with PHP?

Newbie question, i have variables inside my class method, do i have to make them class variables where i can access them using $this? If no, please explain when do i use or make a class variables?

private function is_valid_cookie()
{
    $securedtoken = $this->input->cookie('securedtoken');
    // Checks if the cookie is set
    if (!empty($securedtoken)) {
        // Checks if the cookie is in the database
        $s = $this->db->escape($securedtoken);
        $query = $this->db->query("SELECT cookie_variable FROM jb_login_cookies WHERE cookie_variable=$s");
        if ($query->num_rows() != 0) {
            // Now let us decrypt the cookie variables
            $decoded = unserialize($this->encrypt->decode($securedtoken));
            $this->login($decoded['username'], $decoded['password']);
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

as you guys can see, i have variables $securedtoken and $decoded = array(), i cant decide if i have to make them class variables and just access them with $this

Upvotes: 1

Views: 85

Answers (4)

Blake
Blake

Reputation: 1741

You do, yes. You can declare class variables like this:

class Dog
{
    protected $name = 'Spot';

    public function getName()
    {
        return $this->name;
    }
}

You can read more about properties (member variables) in the documentation.

Upvotes: 1

dm03514
dm03514

Reputation: 55972

You do not have to make them instance variables. You can make them static variables too, or constant variables! You use a class variable to describe attributes of a class. ie what a class has.

Its important to get your terminology correct too. You are asking about making the variable and instance variable. A class variable (http://en.wikipedia.org/wiki/Class_variable) refers to a static variable

For your specific example if your two variables are only used in that function you should not make them instance variables. There is no reason to share them accross the class On the other hand if you need to use them again in other methods or in other places than yes. you should.

Deciding what kind of variable you want and what kind of access is a design decision.

Good places to start are object oriented php overview. http://php.net/manual/en/language.oop5.php

And basic beginner tutorials http://www.killerphp.com/tutorials/object-oriented-php/

Upvotes: 1

Aaron Hathaway
Aaron Hathaway

Reputation: 4315

You'll want to make class variables when you are trying to share those variables throughout different functions in the class. You'll then need different Access Modifiers (public, private, protected) for these properties depending on whether or not outside code can view them, child classes can view them, or nothing at all.

Upvotes: 1

Mike Brant
Mike Brant

Reputation: 71422

I actually try to minimize use of class-level variables to cases where they are going to be common amongst multiple methods, or they are going to be referenced from code outside the class (either directly or via getters/setters). If the variable is just needed in local scope for a method, do not pollute the class with it.

Upvotes: 1

Related Questions