<a href="#" editable-text="user.name" onshow="convertToUpperCase(user)">{{ user.name || 'empty' }}</a>
这里我在启动功能中有abstract class Dropboxapi {
protected $webAuth;
protected function abi() {
require __DIR__.'/app/Dropbox/autoload.php';
self::start();
self::dropbox_auth();
}
public function start() {
$webAuth = new Dropbox\WebAuth($appInfo,$appName,'path',$csrfTokenStore);
}
public function dropbox_auth() {
$authUrl = $webAuth->start();
}
}
Dropboxapi::abi();
个对象。当我在$webAuth
中使用它时会显示dropbox_auth
。
当我使用Undefined variable: webAuth
时,我正在$this->webAuth
我也尝试过self :: webAuth。这显示Using $this when not in object context
。所以我不明白如何使用它。
答案 0 :(得分:0)
你错误地定义了一些东西。抽象类与接口类似,往往被用作“蓝图”类。这意味着它们需要被另一个要扩展的类扩展,并且不能按原样使用。在抽象类中使用$this
很好,就像在php.net的抽象文档中那样:http://php.net/manual/en/language.oop5.abstract.php。
你需要做的是,让另一个类继承/扩展你的DropBoxApi
类,例如:
class DropBoxApi2 extends DropBoxApi
{
}
当继承类DropBoxApi2
时,它已经具有它的父(DropBoxApi
)的函数和属性。你可以像(例子)一样使用它:
$api = new DropBoxApi2();
$api->start();
此外,您使用的双冒号是静态运算符。这与概念远不同于抽象。
答案 1 :(得分:0)
如果抽象方法被定义为受保护,则必须将函数实现定义为protected或public,而不是private。
许多示例都是there用于抽象类。只需检查你是否可以。如你没有抽象的那样,只需要定义类和函数,如下所示。这里的所有变量和方法都是$ this context。
class Dropboxapi {
public $this->webAuth='';
public function abi() {
require __DIR__.'/app/Dropbox/autoload.php';
$this->webAuth = new
Dropbox\WebAuth($appInfo,$appName,'path',$csrfTokenStore);
}
public function dropbox_auth() {
$authUrl = $this->webAuth->start();
}
}
$dropbox = new Dropboxapi();
$dropbox->dropbox_auth();
答案 2 :(得分:-1)
示例代码。替换您的要求。
你必须把一切都变成静态的
abstract class Dropboxapi {
protected static $webAuth;
public static function abi() {
self::start();
self::dropbox_auth();
}
public static function start() {
self::$webAuth = new Stdclass();
}
public static function dropbox_auth() {
var_dump(self::$webAuth);
}
}
Dropboxapi::abi();