$ this-> var или $ var - PullRequest
       1

$ this-> var или $ var

1 голос
/ 17 июня 2011

Я только начал использовать ООП / CodeIgniter. Я хочу, чтобы назначить ввод данных для переменных. Интересно, какой я должен использовать $this -> var или $var и как они отличаются друг от друга? Спасибо.

Например

$agree = $this -> input -> post( 'agree' );

OR

$this -> agree = $this -> input -> post( 'agree' );

Оба будут работать нормально, как:

if ($agree) { }

OR

if ($this -> agree){ }

Спасибо

Ответы [ 7 ]

2 голосов
/ 17 июня 2011

Я предполагаю, что вы говорите о том, что использовать внутри пары контроллер / действие?

$this->var на самом деле относится к свойству класса контроллера с именем var.

$var означает, что это локальная (функциональная) переменная в области действия

Если выспециально не хотите обращаться к свойству класса, не используйте $this.Просто используйте $var и сделайте его доступным только в рамках функции.

Если вы действительно ссылаетесь на свойство класса и хотите, чтобы это свойство было доступно всем методам вашего класса, убедитесь, что выобъявите это в вашем определении класса сверху.

2 голосов
/ 17 июня 2011

Это вопрос сферы действия

<?php
    class Example extends CI_Controller
    {
        private $agree1;

        public function __construct()
        {
            parent::__construct();
        }

        public function index()
        {
            $agree2 = $this->input->post( 'agree' );
            $this->agree1 = $this->input->post( 'agree' );

            // within this context both are accessable
            // these will print the same
            var_dump($agree2);
            var_dump($this->agree1);

            // call the helper function
            $this->helper();
        }

        private function helper()
        {
            // within this context $agree2 is not defined
            // these will NOT print the same. Only the 2nd will print the content of the post
            var_dump($agree2);
            var_dump($this->agree1);
        }
    }
?>
2 голосов
/ 17 июня 2011

Это действительно вопрос предпочтения, когда речь идет о дополнительных локальных переменных. В качестве общего руководства я бы использовал $var, если переменная относится только к методу, и $this->var, если для других методов имеет смысл использовать эту переменную тоже.

Если вы просто собираете ввод и обрабатываете его в этом методе, я бы просто использовал локальную переменную. Члены класса обычно используются для вещей, относящихся к классу / объекту, например, класс, представляющий транспортное средство, может иметь переменную $number_of_wheels.

1 голос
/ 17 июня 2011

Это зависит от того, хотите ли вы установить локальную переменную или переменную объекта.

Ваша переменная объекта должна быть объявлена ​​в начале класса (например, private $var) - они доступны из различных методов в классе.

Локальная переменная доступна только в области действия текущего метода.

1 голос
/ 17 июня 2011

Если вы используете $this->var, то вы имеете в виду переменную класса . Если вы присваиваете ему значение $var, то вы имеете в виду локальную переменную . Я полагаю, вам нужно использовать следующее, если вам не нужны значения формы, доступные другим методам:

$agree = $this->input->post('agree');

0 голосов
/ 17 июня 2011

$this->agree), если вы собираетесь использовать его в других функциях класса, $agree, если использовать его в текущей области видимости, то есть внутри функции сделать его только локальной переменной.

0 голосов
/ 17 июня 2011

Я думаю, что только $this->agree работает, однако я не проверял это.

Ad @ m

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