PHP в деталях


         

И то же самое можно


<?

$a = "bukva a";

$b = "bukva b";

$c = "a";

echo $$c;

?>

Такой код выведет "bukva a". И то же самое можно делать с объектами и их свойствами:

<?

class someclass1 {

  var $a = 1;

  var $b = 2;

  var $c = 3;

  }

class someclass2 {

  var $a = 4;

  var $b = 5;

  var $c = 6;

  }

$d = new someclass1;

$e = new someclass2;

$f = "d";

$g = "c";

echo ${$f}->{$g};

?>

(такой код выдаст "3")

То же касается и динамических имен функций.

В руководстве по PHP4 написано подробнее о [] и [].

И на прощанье вот что. В начале года мне надо было написать скрипт для рассылки новостей и прайс-листов подписчикам. Зашел я на сайт PHP и заглянул в [], чтобы найти что-нибудь про аттачмент. В комментариях к функции я нашел то, что искал - класс для вложения файла в письмо. За восемь месяцев туда накидали много ссылок на такие классы, а в феврале он был единственный - []. Так вот, как они делают - делать не надо (я тогда в классах разбирался смутно, и просто вырезал функции, несколько упростив код). Процитирую заголовки функций:

class CMailFile {

  var $subject;

  var $addr_to;

  var $text_body;

  var $text_encoded;

  var $mime_headers;

  var $mime_boundary = "--==================_846811060==_";

  var $smtp_headers;

  function CMailFile($subject,$to,$from,$msg,$filename,$mimetype = "application/octet-stream", $mime_filename = false) {

/* если функция имеет то же имя, что и класс, то это будет конструктор класса (см. ниже) */

  function attach_file($filename,$mimetype,$mime_filename) {

/* Вот это не понимаю! attach_file вызывается из функции CMailFile - зачем? Только для красоты. А так - можно было этот кусок кода вставить прямо в главную функцию, раз уж решено сделать единовременный вызов функции. Далее идут несколько функций того же назначения и характера. */


Содержание  Назад  Вперед