我是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
}
}
我似乎在犯错误,违反了类和函数的工作方式,无法弄清它是什么。
答案 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()