2017-02-15 21 views
0

Мне нужно получить доступ к глобальной переменной из другой функции. Сначала я присвоил значение глобальной переменной в одной функции. Когда я пытаюсь получить это значение из другой функции, он всегда возвращает null. Вот мой кодглобальная переменная недоступна внутри функции

StockList.php

<?php 
$_current; 
class StockList 
{ 
    public function report(){ 
    global $_current; 
    $_current = 10; 
    } 

    public function getValue(){ 
    print_r($GLOBALS['_current']); 
    } 
} 
?> 

Suggestion.php

<?php 

    include ("StockList.php"); 
    $stk = new StockList(); 

    $stk->getValue(); 

?> 

Спасибо заранее.

+0

Почему это должно быть глобальной переменной? Почему вы не можете просто использовать свойство класса? –

+0

Вы не можете получить доступ к глобальной переменной до ее создания. С учетом сказанного старайтесь избегать глобальных изменений. – Andrew

+0

Я думаю, что глобальная переменная должна быть внутри класса –

ответ

0

Человек, его трудно понять, что вы пытаетесь сделать, как вы сказали, вы указали report() в своем index.php В любом случае, при работе с классами для установки значений переменных стандартная процедура выглядит следующим образом:

class StockList 
{ 
    public $_current; 
    public function setValue($value){ 
    $this->current = $value; 
    } 

    public function getValue(){ 
    return $this->current; 
    } 
} 

И после того, как каждый раз, когда вы хотите использовать класс:

<?php 
    include ("StockList.php"); 
    $stk = new StockList(); 
    $stk->setValue(10); 
    $_current = $stk->getValue(); 
    var_dump($_current); 
?> 

Это основная идея объектно-ориентированного программирования, преимущества такого подхода являются:

  1. Вы можете динамически устанавливать значение $ _current.

  2. Функция getValue() не предназначена для печати значения переменной, поэтому вы можете использовать эту функцию только для получения значения, а затем делать с ней все, что хотите.

+0

Отчет() вызывается в index.php. Функция getValue() вызывается в Ajax. – balaraman

+0

Можете ли вы как-нибудь показать код для вызова report()? ИЛИ убедитесь, что вы вызвали report() после создания экземпляра класса и до вызова getValue(); – Learner

+0

@balaraman Похоже, вы ожидаете, что изменение ценности будет сохранено на разных страницах. Вы должны использовать сеанс для этого, если это так. В противном случае вы должны установить значение каждый раз – Machavity