如何使对象公开给类中的所有函数?

I've created a class that calls an object in the "__construct" how can i make this object available through out the class.

class SocialMedia { function __construct() { $object = "whatever"; } }

how can I access $object in the other functions (which are static) from with in the class. I've tried to use "$this->object" but I get an error "$this when not in object context" when I try to call it from my other static functions.

Use

self::$object = 'whatever'

instead and read the PHP Manual on the static keyword

On a sidenote, statics are death to testability, so you might just was well forget what you just learned and use instance variables instead.

Try defining your object inside the scope of the class, right above the function. So, as an example:

class SocialMedia { public $object; function __construct() { $object = "whatever"; } }

Or you could try defining it as "public static" instead of just "public". As an example, this:

class SocialMedia { public static $object; function __construct() { $object = "whatever"; } }

If $object is not static then you have a problem. You need to be able to refernce a specific instance of the class. Youll need to pass the actual instance of SocialMedia to its static method or come up with some other shenanigans:

public static function someMethod(SocialMedia $instance, $args)
{
   // do stuff with $instance->object and $args
}

public function methodThatUsesStaticMethod($args)
{
   self::someMethod($this, $args);
}

If $object is static then you can use the scope resolution operator to access it as others have mentioned:

public static $object;

public static function someMethod($args)
{
   $object = self::$object;
   // do stuff with $object and $args
}

But then you have another issue... What happens if no instance of SocialMedia has been created yet and so SocialMedia::$object is not yet set?

make it static:

class SocialMedia {

    protected static $object;

    function __construct() {
        self::$object = "whatever";
    }
}

You could make your class a singleton (OOP Patterns in PHP Manual) but that really isn't any better solution if you want testability and/or dependency injection. No matter how you suggarcoat it you are after a global variable and sooner or later you'll find out all the troubles they bring.