2011-12-30 3 views
1

У меня есть следующий класс:В чем разница между этими переменными PHP?

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 представляется стандартной переменной, а не «переменной параметра». Надеюсь, что я использую правильный язык. Почему это еще не определено? Почему он используется в этом классе?

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

Заранее благодарим за помощь!

ответ

1
private $connection; 
public $last_query; 
private $magic_quotes_active; 
private $real_escape_string_exits; 

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

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

+0

Отлично. Спасибо. Спасибо всем остальным :-) – Nathan

1

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

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

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

1

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

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

http://www.killerphp.com/tutorials/object-oriented-php/ - хороший простой учебник для ООП в PHP. Взгляните на это ...

1

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

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

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