Область видимости

peroksid

Guest
Область видимости

Следующий фрагмент
PHP:
<?php
$a = 1;
function a($a){
    print $a . "\n";
    b();
}
function b(){
    global $a;
    print $a . "\n";
}
a(2);
?>
выводит
Кто знает, как из функции b(), которую вызывают из функции a(), получить доступ не к глобальной области видимости, а к локальной области видимости функции a()?
 

peroksid

Guest
Не подходит. В функцию b передается параметром имя функции, которая ее вызывает. Их несколько (много в общем-то). В каждой есть переменная, которая называется так же, как функция. То есть в функции a() функция b() вызывается на самом деле так: b(__FUNCTION__). Там еще несколько параметров передается, поэтому хочется передать как-то так. Ну, как-то так.
 

peroksid

Guest
PHP:
class A
{
    function A() {}
    function _cf($name, $table, $key, $value = null)
    {
    	global $db;
    	if (!is_null($this->__temp)) {
    		$db->autoExecute($table, array($name => $this->__temp), DB_AUTOQUERY_UPDATE);
    		$this->$name = $this->__temp;
    	} elseif(!isset($this->$name)) {
    		$this->$name = getOne(
				"SELECT `$name` FROM `$table` WHERE `$key` = ?", 
				array((!is_null($value))?$value:$this->$key())
			);
    	}
    	return $this->$name;
    }
    function host($host = null)
    {
    	$this->__temp = $host;
    	return $this->_cf(__FUNCTION__, TBL_FTP, 'site_id');
    }
}
Сейчас так. Хочется обойтись без привлечения
PHP:
$this->__temp
 

Kelkos

Сам себе программер
Хм.. через суперглобальные массивы можно что то протаскивать в таких случаях. (через $_GET например)
Я вот тоже не нашёл человеческого метода для передачи данных в таком случае. Может кто знает такой метод?
 
Сверху