PHP / OOP - 在类中初始化类

时间:2012-07-25 14:26:09

标签: php oop

我对OOP相当新,但不是PHP的新手。我正在尝试从另一个类中初始化一个类。

的index.php

<?
error_reporting(E_ALL);
require("classes/memcache.php");
require("classes/video_test.php");
$videos = new video;
?>

video_test.php

<?php
    class video {

            private $mcache;

            public function __construct() {
            $this->mcache = new MCACHE();
            }

            public static function get_scene($scene_id) {
            $info = $this->$mcache->get_item("mykey");
            }


    }
?>

产地:  PHP致命错误:在

中不在对象上下文中时使用$ this

3 个答案:

答案 0 :(得分:7)

  

不在

中的对象上下文中时使用$ this

您不能在声明为static的方法中使用$ this。只需删除static关键字并通过对象句柄使用您的方法:

$vid = new video()
$vid->get_scene();

答案 1 :(得分:1)

静态方法属于类,而不是您使用 new 创建的对象。 $ this伪变量是指对象而不是类。这就是您的代码中断的原因。您只需在函数前删除static关键字即可修复此段代码。或者你可以静态地重新定义整个事物(你可以使用 self :: 而不是$ this,声明$ mcache static并创建一个静态方法来初始化该变量)

您犯的另一个错误是: $ this-&gt; $ mcache 。要正确访问属性,请编写 $ this-&gt; mcache 。您的代码试图访问一个名为$ mcache变量的属性,该属性未在函数中定义(因此您尝试访问 $ this-&gt; null

答案 2 :(得分:-1)

要添加,类和实例之间存在关键差异。当我们说静态方法或属性属于一个类时,它意味着该类的所有实例共享这一个属性。相反,对象实例具有其自己的一组单独属性。要掌握OOP,这种理解非常重要。