Техника ООП. Цепочки.

В сегодняшнем небольшом посте я расскажу про один очень полезный и удобный php-трюк или ООП-прием или называйте как хотите. В конечном итоге с помощью этой техники можно значительно сократить код и сделать его более удобным для чтения.

Технику я называл цепочками, по аналогии с механизмом в jQuery (мы как-то писали об этом в статье про jQuery).

Предположим, что перед нами стоит задача – реализовать на php класс для форматирования текста. Путь будет только три функции – выделить жирным (bold), сделать курсивом (italic) и подчеркнуть (underline).

При обычной реализации этого класса, при одновременном применении нескольких действий у нас может получиться что-то вроде:

$str = 'qwe'; // текст, который нужно выделить
$text = Text->Bold($str);
$text = Text->Italic($str);
echo $text;

А после использования техники цепочек это можно будет сделать так:

$str = 'qwe';
echo $text = Text->Bold($str)->Italic($str);

Гораздо короче и проще выглядит, не так ли?

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

Сразу приведу пример реализации этого механизма для нашего случая. Он достаточно прост.

text.class.php

<?php
class Text {
	var $text;
	function set($text) {
		$this->text = $text;
		return $this;
	}
	function bold($str) {
		$this->text = str_replace($str, '<b>'.$str.'</b>', $this->text);
		return $this;
	}
	function italic($str) {
		$this->text = str_replace($str, '<i>'.$str.'</i>', $this->text);
		return $this;
	}
	function underline($str) {
		$this->text = str_replace($str, '<u>'.$str.'</u>', $this->text);
		return $this;
	}
	function __toString() {
		return $this->text;
	}
}
?>

index.php

<?php
	require_once 'text.class.php';
	$sentence = 'Hello, it is my first web application.';
	$text = new Text();
	$text = $text->set($sentence)->bold('Hello')->italic('first')->underline('web');
	echo $text;
?>

В этом примере непонятным может остаться только специальный метод _ToString, значение которого было описано в одной из наших статей про ООП.

Техника довольно проста в реализации и, в то же время, ей можно найти много применений. Так что пользуйтесь и пишите где ее удалось еще использовать! :)

Удачи.





Читайте также:



4 Ответов на “Техника ООП. Цепочки.”

  1. Игорь

    Думаю новичкам пригодится, техника очень удобная.

  2. Мега уважение автору!
    Сколько строк кода уж написано за 2 года, а подобная методика не применялась.
    Стыжусь и отныне применяю. Экономит время при установке инкапсулированных данных, делает код изящнее.

  3. Ай молодец автор! Сколько читаю - всегда что-то новенькое и интересное попадется :)
    После прочтения аж руки зачесались и в голове мысли сменяют одна другую со скоростью света… ну а самое интересное - простота реализации!

  4. JustGuy

© Copyright. . I-Novice. All Rights Reserved. Terms | Site Map