Сниппеты php

Сниппеты php

Любишь заниматься изобретением велосипедов на php? Я тоже, поэтому держи коллекцию сниппетов и иди изобретать мопед.

Определяем возраст пользователя.

<br />
$bday = &#8217;13.12.1989&#8242;;<br />
$bday = preg_replace(&#8216;/\d+\.\d+\.\d+/&#8217;, &#8216;$3-$2-$1&#8242;, $bday); // неважно, как мы получили эту строку, важен формат YYYY-MM-DD<br />
$bday = strtotime($bday);<br />
$bday = strtotime(&#8216;-&#8217; . $bday . &#8216;seconds&#8217;, time());<br />
echo date(&#8216;Y&#8217;, $bday) &#8211; 1970, &#8216;<br />&#8216;; // 1970 &#8211; год создания Unix<br />
//выведет 22<br />

Второй вариант:

<br />
$bday = &#8217;13.12.1989&#8242;;<br />
$bday = preg_replace(&#8216;/\d+\.\d+\.\d+/&#8217;, &#8216;$3-$2-$1&#8242;, $bday);<br />
$bday = date_create(preg_replace(&#8216;/\d+\.\d+\.\d+/&#8217;, &#8216;$3-$2-$1&#8242;, $bday));<br />
$oday = date_create(&#8220;now&#8221;);<br />
$intv = date_diff($bday, $oday);<br />
echo $intv->format(&#8216;%Y%&#8217;);<br />
//выведет 22<br />

Форматирование чисел отделением цифр по три разряда:

<br />
$num = 143723863957.3356;<br />
echo number_format($num, &#8217;3&#8242;, &#8216;:&#8217;, &#8216; &#8216;);<br />
//выведет 143 723 863 957:336<br />

Поиграйся параметрами number_format – узнаешь много интересного. ;)

Время выполнения скрипта:

<br />
$__t = microtime(true);<br />
// тут скрипт<br />
echo microtime(true) &#8211; $__t, &#8216; секунд&#8217;;<br />

Разбор файла по строкам:

<br />
$filename = &#8216;file.txt&#8217;;<br />
$content = file($filename); // $content &#8211; массив строк<br />

Да и вообще, стандартные функции зачастую обеспечивают функционал, сам по себе имеющий право на отдельный сниппет.

Передача значения в javascript (обратное не работает – читай про ajax):

<br />
< ?php
$ar = array(30, 20, 40, 10);
?><br />
<script type="text/javascript">
var test = [< ?php echo implode($ar);?>];
console.log(test);
</script><br />

Вообще, это не сниппет, а просто полезный прием – динамическая генерация кода javascript.
А потом с помощью js можно динамически сгенерировать код страницы. %)

Множественное наследование (грязный трюк):

<br />
class A{function sayA(){echo &#8216;A&#8217;;}};<br />
class B{function sayB(){echo &#8216;B&#8217;;}};<br />
class C{function sayC(){echo &#8216;C&#8217;;}};<br />
class ABC{<br />
	public $cls = array();<br />
	function __construct(){<br />
		$this->cls[] = new A();<br />
		$this->cls[] = new B();<br />
		$this->cls[] = new C(); // грузим классы-потомки<br />
	}<br />
	function sayABC(){echo &#8216;I don\&#8217;t want.&#8217;;}<br />
	function __call($name, $args){<br />
		if(!method_exists(self, $name)){<br />
			for($i = 0, $il = sizeof($this->cls); $i < $il; ++$i){
				if(method_exists($this->cls[$i], $name)){<br />
					return call_user_func_array(array($this->cls[$i], $name), $args);<br />
				}<br />
			}<br />
			throw new Exception(&#8216;Method not exists.&#8217;);<br />
		}<br />
	}<br />
}</p>
<p>$abc = new ABC();<br />
$abc->sayA();<br />
$abc->sayC();<br />
$abc->sayABC();</p>
<p>// выведет ACI don&#8217;t want.<br />

  1. Комментов пока нет

  1. Трэкбэков пока нет.

T_T O_O =| =D =/ =) =( ;) :twisted: :idea: :cool: :blush: :?: :!:
*