В чем разница между этими переменными PHP? - PullRequest
1 голос
/ 30 декабря 2011

У меня есть следующий класс:

class MySQLDatabase
{
    private $connection;
    public $last_query;
    private $magic_quotes_active;
    private $real_escape_string_exits;

public function __construct()...

// 1. OPENS connection and selects a DB
public function open_connection()...

// 2. PERFORMS a DB query
public function query($sql)
{
    $this->last_query = $sql;
    $result = mysql_query($sql, $this->connection);
    $this->confirm_query($result);
    return $result;
}

....

ПРИМЕЧАНИЕ: Я включил несколько строк, которые являются посторонними для моего вопроса, просто для придания некоторого контекста, они обозначаются ...

Сосредоточив внимание на public function query($sql), я смущен тем, что вижу.

  1. переменная $sql в методе не определена нигде, кроме как здесь, и я считаю, что это переменная параметра, поскольку в моей среде IDE она немного отличается от других переменных. Что это значит и почему это отличается?
  2. $this->last_query также является переменной, но ее необходимо определить внутри класса, как видно в верхней части самого класса. Почему этот должен быть определен так, а переменная $sql - нет?
  3. И, наконец, $result представляется стандартной переменной, а не «переменной параметра» - я надеюсь, что я использую правильный язык. Почему этот также не определен? Почему так используется в этом классе?

Я действительно надеюсь понять различия между этими парнями, чтобы лучше разобраться в их использовании.

Заранее спасибо за помощь!

Ответы [ 4 ]

1 голос
/ 30 декабря 2011

Посмотрите. PHP, как и JavaScript, является свободно типизированным языком. Тип переменной может динамически меняться. Поэтому нам не нужно явно объявлять тип переменной (int / String / char / byte).

$ sql передается в качестве параметра. PHP не заботится о своем типе.

1 голос
/ 30 декабря 2011

$sql - аргумент для функции query. Он не должен объявлять для работы во всем вашем блоке класса по умолчанию. Не забывайте, что вы не можете получить доступ к нему как к свойству класса в вашем проекте.

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

http://www.killerphp.com/tutorials/object-oriented-php/ - хорошее простое руководство по ООП на PHP. Посмотрите на это ...

1 голос
/ 30 декабря 2011
private $connection;
public $last_query;
private $magic_quotes_active;
private $real_escape_string_exits;

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

$sql - это параметр вашей функции query, означающий, что ее область действия находится только внутри этой функции и недоступна из любой другой функции. То же самое относится и к локальной переменной $result. Он также доступен только внутри функции query.

1 голос
/ 30 декабря 2011

$sql является переменной параметра.Всякий раз, когда вы хотите выполнить код, который находится в этой функции, вы должны указать, каким должен быть $sql, передав его как аргумент .

$result становится определенным при назначениичто-то к этому.В PHP вам не нужно объявлять переменные для их использования, но вам нужно объявлять поля класса.

Я рекомендую вам прочитать некоторые учебные пособия по PHP, прежде чем продолжить.

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