无法在函数类内调用全局变量

时间:2018-07-16 14:33:29

标签: php class global-variables

我是PHP5和类的新手,正在努力使全局变量在函数内工作时感到挣扎,为更好地解释它,请检查下面的代码。

class alpha{

#first function
public function n_one(){

    #variable
    $varr = 1;

    #inner function
    function n_two(){
        global $varr;

        #Unable to get variable
        echo $varr;
        if($varr)
        {
            echo 'yessssss';
        }
    }

    echo $varr // Returns variable fine
}
}

我似乎在犯错误,违反了类和函数的工作方式,无法弄清它是什么。

2 个答案:

答案 0 :(得分:2)

移动“内部功能”和属性。

class Alpha
{
    private $varr = 1;

    public function n_one()
    {
        // to access a property ore another method, do this
        $this->varr = $this->doSomething();

        return $this->varr; // Returns variable fine
    }

    private function doSomething()
    {
        // manipulate $this->varr here
    }
}

此外,永远不要从类内部回显,而是返回变量并回显它。

echo $alpha->n_one();

答案 1 :(得分:0)

#include "ItemModel.h" ItemModel::~ItemModel(){ qDeleteAll(ItemList_); ItemList_.clear(); } int ItemModel::rowCount(const QModelIndex &parent) const{ return parent.isValid() ? 0 : ItemList_.size(); } QVariant ItemModel::data(const QModelIndex &index, int role) const{ switch (role) { case Qt::UserRole: { Item *Item = ItemList_[index.row()]; return QVariant::fromValue(Item); } break; default: return QVariant(); break; } } void ItemModel::appendItem(Item *Item) { ItemList_.append(Item); } QHash<int, QByteArray> ItemModel::roleNames() const{ QHash<int, QByteArray> roles; roles[Qt::UserRole] = "item"; return roles; } 意味着在全局范围内访问变量,而不仅仅是包含范围。当您在内部函数中引用global时,它将被视为$varr

如果您希望它引用与外部函数中相同的变量,则还需要在其中声明变量$GLOBALS['varr']。否则,它是该函数中的局部变量,而内部函数则访问全局变量。

global

或者,您可以使用#first function public function n_one(){ global $varr; #variable $varr = 1; #inner function function n_two(){ global $varr; #Unable to get variable echo $varr; if($varr) { echo 'yessssss'; } } echo $varr // Returns variable fine } 声明来声明一个应从外部作用域继承的变量。

use()