2013-07-26 3 views
1

У меня есть переменная за пределами открытого класса. Эта переменная:Как использовать переменную PHP в открытом классе?

$userid 

Я хотел бы использовать переменную в следующем классе PHP, но я имею вопросы:

public function printJavascript() { 
    if ($this) { 
     $page = $this - > page; 
     $order = (($this - > order) ? implode(':', $this - > order) : ''); 
     $filter = (($this - > filter) ? implode(':', $this - > filter) : ''); 
    } 

    echo "<script type=\"text/javascript\">\n"; 
    echo "var params = ''; var tblpage = '".$page."'; var tblorder = '".$order."'; var tblfilter = '".$filter."';\n"; 
    echo "function tblSetPage(page) { tblpage = page; params = '&page=' + page + '&order=' + tblorder + '&filter=' + tblfilter; updateTable(); }\n"; 
    echo "function tblSetOrder(column, order) { tblorder = column + ':' + order; params = '&page=' + tblpage + '&order=' + tblorder + '&filter=' + tblfilter; updateTable(); }\n"; 
    echo "function tblSetFilter(column) { val = document.getElementById('filter-value-' + column).value; tblfilter = column + ':' + val; tblpage = 1; params = '&page=1&order=' + tblorder + '&filter=' + tblfilter; updateTable(); }\n"; 
    echo "function tblClearFilter() { tblfilter = ''; params = '&page=1&order=' + tblorder + '&filter='; updateTable(); }\n"; 
    echo "function tblToggleCheckAll() { for (i = 0; i < document.dg.checkbox.length; i++) { document.dg.checkbox[i].checked = !document.dg.checkbox[i].checked; } }\n"; 
    echo "function tblShowHideFilter(column) { var o = document.getElementById('filter-' + column); if (o.style.display == 'block') { tblClearFilter(); } else { o.style.display = 'block'; } }\n"; 
    echo "function tblReset() { params = '&page=1'; updateTable(); }\n"; 
    echo "</script>\n"; 
} 
} 

Как бы это сделать? Пожалуйста, посоветуйте, и я благодарю всех за помощь.

+3

Передайте его своему классу через конструкцию? –

+0

Проверьте первый связанный вопрос -> он точно отвечает на ваш ответ. http://stackoverflow.com/questions/484537/in-php-when-initializing-a-class-how-would-one-pass-a-variable-to-that-class-to?rq=1 –

+1

Это 'function', а не' class'. – jterry

ответ

0

Вы можете определить $userid как глобальный, добавив global $userid; в начале вашего метода класса, и, как сказал Дэйв Чен в своем комментарии, вы можете передать его объекту через конструктор или другой метод. Второй вариант - лучший способ реализовать, на мой взгляд.

0

Было бы лучше либо передать эту переменную классу через конструкцию, либо как еще один дополнительный аргумент, однако, если переменная уже общедоступна, вы сможете ее использовать.

<?php 
global $var; 
$var = 'there'; 

class test { 
    public function testy() { 
     global $var; 
     echo 'hi ' . $var; 
    } 
} 

$class = new test(); 
$class->testy(); 

Выход:

[email protected]ter /tmp $ vim lol.php 
hi there 

Лучший вариант (как упоминалось выше) было бы передать переменную с помощью аргумента на функцию.

<?php 
$var = 'there'; 

class test { 
    public function testy($who) { 
     echo 'hi ' . $who; 
    } 
} 

$class = new test(); 
$class->testy($var); 
+0

-1 для 'global'. Функции и методы содержат аргументы. –

+0

@ KevinM1 Я это понимаю, и я сказал это в первой части предложения. ([...] либо передать эту переменную классу через конструкцию, либо как еще один дополнительный аргумент [...]). Я добавил код, чтобы передать его как аргумент независимо :) – timgws

Смежные вопросы