Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在类内的函数中访问$bucket时出现问题_Php_Couchbase - Fatal编程技术网

Php 在类内的函数中访问$bucket时出现问题

Php 在类内的函数中访问$bucket时出现问题,php,couchbase,Php,Couchbase,我正在尝试构建一个可重用的db类,它允许我对couchbase db访问基本的crud函数。当我尝试执行此函数时,出现以下错误: PHP Notice: Undefined variable: bucket in /var/www/html/PHRETS/couchBase.php on line 26 PHP Fatal error: Uncaught Error: Call to a member function upsert() on null in /var/www/html/PH

我正在尝试构建一个可重用的db类,它允许我对couchbase db访问基本的crud函数。当我尝试执行此函数时,出现以下错误:

PHP Notice:  Undefined variable: bucket in
/var/www/html/PHRETS/couchBase.php on line 26 PHP Fatal error: 
Uncaught Error: Call to a member function upsert() on null in
/var/www/html/PHRETS/couchBase.php:26 Stack trace:
#0 /var/www/html/PHRETS/retsphp.php(72): couchDb::upsert('OpenHouse::b769...', Object(OpenHouse))
#1 {main}   thrown in /var/www/html/PHRETS/couchBase.php on line 26
所以问题是如何从类中的函数访问$bucket对象

这是我在couchBase.php中的代码

<?php

use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;

$bucketName = "default";

// Establish username and password for bucket-access
$authenticator = new \Couchbase\PasswordAuthenticator();
$authenticator->username('Administrator')->password('Password');

// Connect to Couchbase Server - using address of a KV (data) node
$cluster = new CouchbaseCluster("couchbase://127.0.0.1");

// Authenticate, then open bucket
$cluster->authenticate($authenticator);
$bucket = $cluster->openBucket($bucketName);


class couchDb {



    public function upsert($DocId, $doc)
    {
        $result = $bucket->upsert($DocId, $doc);
        return ($result->cas);
    }

}
因此类范围中不知道“$bucket”。要在类中使用“bucket”,可以注入此实例。请查看下面这样的“”:

class couchDb {
    private $bucket;

    public function __construct(THE_TYPE_WICH_RETURNS_OPENBUCKET $bucket)
    {
        $this->bucket = $bucket;
    }

    public function upsert($DocId, $doc)
    {
        $result = $this->bucket->upsert($DocId, $doc);
        return ($result->cas);
    }

}

首先,请注意CouchDB和Couchbase不是一回事,我建议重命名您的类以避免混淆如何找到类型来替换“the_type_which_RETURNS_OPENBUCKET”,类型提示不是严格要求的,我不认为,但我认为他的意思是openBucket返回的类型。这可能是“IBucket”或“Bucket”。