В то время как слова в Vilx верны, можно использовать stati c переменную в в классе :
Поскольку ваш метод static
, он на самом деле не находится внутри какого-либо «класса», но больше похож на глобальный. Поэтому он не может «сохранять» данные между каждым его запуском, если только вы не используете переменную «stati c» вне области действия метода, но внутри этого класса вместе с вашим методом «stati c».
Ваша жизнь станет намного проще, если вы будете использовать ссылку на метод класса, не относящийся к классу c (или если вы используете суперглобальный тип, такой как переменная $_SESSION
). Все зависит от того, что вы на самом деле делаете с этим методом.
Однако приведенный ниже пример кода определяет строку, а затем повторяет вызов этой строки в том же сценарии PHP, что и в примере.
Класс с Stati c Переменная:
<?php
class twister {
public static $VALUEZ = ''; //this holds your generated code value.
public static function codeGenerator() {
if(empty(self::$VALUEZ)){
// Is unset so generate this value for the first time.
$length = 7;
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$output = null;
for ($i = 0; $i < $length; $i++) {
$output .= $characters[mt_rand(0, strlen($characters) - 1)];
}
self::$VALUEZ = $output;
}
else {
// value is not empty so simply throw it back out.
$output = self::$VALUEZ;
}
return $output;
} // close method.
} //close class
$claz = new twister();
print $claz::codeGenerator();
print "\n";
print $claz::codeGenerator();
print "\n";
print $claz::codeGenerator();
Выход:
DVMbN0L
DVMbN0L
DVMbN0L