Как получить данные строки из другой функции? - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть php-файл с различными функциями в нем.Мне нужно получить данные из строк в функции, но строки были указаны в другой функции.Как это можно сделать, пожалуйста?

... Чтобы уточнить, у меня есть две функции.

function a($request) { $username = ...code to get username; } 

имя пользователя может быть восстановлено во время функции a.

function b($request) { } 

функция b нуждается в имени пользователя, но не может получить его в точке, где она была вызвана, поэтому она нужна из функции a.Я очень новичок здесь (так что терпите меня, пожалуйста), я попытался просто использовать $ username в функции b, но это не сработало.

Не могли бы вы объяснить, как я могу сделать это более четко, пожалуйста.Есть еще 5 таких строк, которые нужны функции b из функции a, поэтому мне нужно будет сделать это для всех строк.

... Код:

    <?php
class function_passing_variables {

    function Settings() {       
        //function shown just for reference...
        $settings = array();
        $settings['users_data'] = array( "User Details", "description" );
        return $settings;
    }

    function a( $request ) {
        //This is the function that dynamically gets the user's details.
        $pparams = array();
        if ( !empty( $this->settings['users_details'] ) ) {
            $usersdetails = explode( "\n", Tool::RW( $this->settings['users_data'], $request ) );

            foreach ( $usersdetails as $chunk ) {
                $k = explode( '=', $chunk, 2 );
                $kk = trim( $k[0] );
                $pparams[$kk] = trim( $k[1] );
            }
        }

        $email=$pparams['data_email'];
        $name=$pparams['data_name'];
        $username=$pparams['data_username'];
       //These variables will retrieve the details
    }

    function b( $request ) {
        //Here is where I need the data from the variables
        //$email=$pparams['data_email'];
        //$name=$pparams['data_name'];
        //$username=$pparams['data_username'];
    }
}
?>

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

@ Смит, позвольте мне попытаться уточнить, что вы имеете в виду.

  1. У вас есть несколько переменных, например: $var1, $var2 и т. Д.
  2. У вас естьдве функции (или более) и необходимо получить доступ к этим переменным.

Если это то, что вы имеете в виду, так что это может вам помочь:

global $var1,$var2;  

function a($params){

   global $var1;
   $var1 = 1;
}

function b($params){  

   global $var1,$var2;

   if($var1 == 1){
      $var2 = 2;
   }
}

Просто не забудьте определить global всякий раз, когда вы хотите получить доступ к глобальной переменной видимости через функцию.Вы можете ПРОЧИТАТЬ ЭТОТ , чтобы прояснить ситуацию.

РЕДАКТИРОВАНИЕ

Теперь все ясно.Тогда вы можете сделать это:

class function_passing_variables{
   // add these lines
   var $email = "";
   var $name = "";  
   var $username = "";  
  // ....  

Затем в вашем function a($request) измените это:

$email=$pparams['data_email'];
$name=$pparams['data_name'];
$username=$pparams['data_username'];

на:

$this->email=$pparams['data_email'];
$this->name=$pparams['data_name'];
$this->username=$pparams['data_username'];

Теперь вы можете получить к нему доступ в вашем function b($request) следующим образом:

echo $this->email;
echo $this->name;
echo $this->username;
0 голосов
/ 21 ноября 2011

В функциях, в которых была задана строка:

Global $variable;
$variable = 'string data';

Хотя вы действительно должны возвращать строковые данные в переменную, а затем передавать указанную переменную другой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...