Поиск по сайту

Результаты поиска: «Static»

Найдено совпадений: 123

Введение
Раньше мне приходилось довольно часто сталкиваться с проблемой непонимания начинающими программистами основ такого важного механизма ООП, как наследование. Задачи, поставленные мной, часто приводили к созданию такого необычного решения, что приходилось переписывать добрую часть кода, не смотря на то, что частично решение уже было реализовано ранее. Мне удалось решить эту проблему в своем коллективе и сейчас я хочу поделиться с вами секретом "наследования".
Целью данной статьи является демонстрация использования наследования на реальных примерах. Возможно, пример окажется слишком узким, но, как мне кажется, он достаточен для внимательного читателя.

Поставленная задача
Как-то раз мне потребовалась реализация механизма аннотирования классов и их членов...
<?php
class pdo_mysql extends sql_utils {
    static $queryes = 0;
    static $time_parse;
    static $query_list;
    static $link;

    public function __construct()
    {
        try {
            self::$link = new PDO_('mysql:host=' . DB_HOST . ';port=' . DB_PORT . ';dbname=' . DB_NAME, DB_USER, DB_PASS);
            self::$link->exec('SET CHARACTER SET utf8');
            self::$link->exec('SET NAMES utf8');
        } 
        catch (PDOException $e) {
            die('Ошибка!!!<br />: ' . $e->getMessage());
        } 
    } 
	
	public static function num_rows($link)
	{
        try {
			$result = $link->rowCount();
        } 
        catch (PDOException $e) {
            die('Ошибка!!!<br />: ' . $e->getMessage());
        } 
		return $result;
	} 

	public static function fetch_assoc($link)
	{
        try {
			$result = $link->fetch();
        } 
        catch (PDOException $e) {
            die('Ошибка!!!<br />: '...
Для очередного клиента разрабатывал интернет-магазин запчастей. Каталога как такового там не было, однако была куча поставщиков, подключенных через API.
Так как клиентов планировалось много, то постоянное обращение к API было бы слишком затратно для сервера.
В рамках этого проекта был написан простой класс, который позволяет кэшировать данные, полученные в ходе каких-либо операций в файл и использовать их в любое удобное время с минимальной задержкой.
Вот он:
<?php
	/*
		Класс для кэширования данных
		Роман Сергеевич Гринько
		rsgrinko@gmail.com
		https://it-stories.ru
	*/
class CCache{
	private static $cache_dir;
	
	public static function init($dir){
		self::$cache_dir = $dir;
	}
	
	
	public static function checkCache($name){ // Проверка наличия элемента...
Зависает в гробнице ассасина в флоренции в зле библиотеки. Как исправить?
2010-05-28 18:47:31,562 - server2 - INFO - ('127.0.0.1', 55858) closed the conne ction static3.cdn.ubi.com - - code 404 , message File not found static3.cdn.ubi.com - - "GET /OnlineConfigService.svc/Get OnlineConfig?onlineConfigID= 5d2718064e2e7327fed15151b4cedaad&target=client HTTP/ 1.1" 404 - static3.cdn.ubi.com - - code 404, message File not found static3.cdn.ubi.com - - "GET /OnlineConfigService. svc/Get OnlineConfig?onlineConfigID=5d2718064e2e7327fed15151b4cedaad&target =client HTTP/ 1.1" 404 - static3.cdn.ubi.com - - code 404, message File not found static3.cdn.ubi.com - - "GET /OnlineConfigService.svc/Get OnlineConfig?onlineConfigID= 5d2718064e2e7327fed15151b4cedaad&target=client HTTP/ 1.1" 404 - static3.cdn.ubi.com...
<?php
interface inTemplate
{
	/**
	* assign
	*
	* Установка переменных, доступных в шаблоне.
	*
	* @param string $var   Имя переменной.
	* @param mixed  $key   Значение переменной.
	**/
    static function assign($var, $key);
 
	/**
	* _searchVar
	*
	* Поиск переменных в конструкциях.
	*
	* @param  string $str	Код шаблона.
	* @return string
	**/
	static function _searchVar($str); 

	/**
	* _parseVar
	*
	* Обработка переменных в шаблоне.
	*
	* @param  string $str	Код шаблона.
	* @return string
	**/
	static function _parseVar($str);


	/**
	* _parseTpl
	*
	* Обработка шаблона.
	*
	* @param  string $tpl		Путь к шаблону.
	* @param  string $fileComp	Путь к...
хосты и хиты на файлах с проверкой на куки.
<?php

# Если гость впервые на сайте
if(empty($_COOKIE['day'])){
SetCookie("day",date('d'),time()+3600*24*350);
$static = file("statistic.dat");
$ud = explode("|",$static[0]);
$udnew = $ud[0]+1;
$udnew2 = $ud[1]+1;
if($ud[2]!=date('d')){ $udnew2=1; }

$newst = $udnew.'|'.$udnew2.'|'.date('d');

$fop = fopen("statistic.dat", "r+");
fputs($fop,$newst);
fclose($fop); }

#Eсли гость и раньше бывал на сайте
if(!empty($_COOKIE['day']) && $_COOKIE['day']!=date('d')){
SetCookie("day",date('d'),time()+3600*24*350);

$static = file("statistic.dat");
$ud = explode("|",$static[0]);
$udnew = $ud[1]+1;
if($ud[2]!=date('d')){ $udnew=1; }

$newst = $ud[0].'|'.$udnew.'|'.date('d');

$fop = fopen("statistic.dat", "r+");
fputs($fop,$newst);
fclose($fop); } 
чтоб код работал создаем файл static.dat с содержанием 0|0|0
и выводим

$static = file("statistic.dat");
$ud = explode("|",$static);
echo'Гостей сегодня: '.$ud.'<br>
Гостей за все...
Я не приверженец практики без теории, потому постараюсь попутно сопровождать весь код важной для незнакомых с ОО архитектурой информацией.
И так хочется продемонстрировать вам мое решение тривиальной ситуации с помощью ОО подхода, которое в последующем сильно экономило мое время.
Предыстория
Как то раз возникла задача организовать класс "Хранитель", которые позволяет хранить в себе текущее состояние родительского объекта и восстанавливать его когда это потребуется, при чем раскрывать это состояние позволяется только родительскому объекту, дабы не нарушить инкапсуляции (кто знаком с шаблонами проектирования, мне понадобился обычный Хранитель). Реализовал его за несколько минут и решил пойти дальше: а почему бы не организовать такой...
Что не так сделал?
<?php
function user_info2($user){ 
static $static = array();
if (isset($static[$user])){ return $static[$user];}
$user_info = user_info($static[$user]);
return $static[$user] = $user_info;}
?>
Доброго времени суток!
Вот решил написать простой и удобный класс для реализации мультиязычности для Вашего сайта.
Итак начнем!
Структура у нас будет следующего вида:
dir: [b]/[/b]
     - dir: [b]i18n[/b]
          - file: [b]ru.php[/b] // тут будут переводы
     - dir: [b]system[/b]
          - file: [b]config.php[/b] // тут будут настройки
          - file: [b]lang.php[/b] // доп. функционал
          - file: [b]i18n.php[/b] // тут собственно сам класс
     - file: [b]index.php[/b]
Создаем файл index.php.
Содержимое:
<?php
include_once ('system/lang.php'); // Подключаем класс
echo __('Test') . '<br />'; // проверка
?>
Создаем папку system.
Создаем в папке system файл config.php.
Содержимое:
<?php
$langs = array('ru',...
<?php
	/**
	 * findInTree($array, $key, $value) Поиск массива в дереве по ключ=>значение
	 * @param array $array исходный массив
	 * @param string $key ключ
	 * @param string $value значение
	 * @access static
	 * @return array
	 */
	public static function findInTree($array, $key, $value, $key2 = null, $value2 = null)
	{
		$results = array();

		$arrIt = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($array));

		foreach ($arrIt as $sub) {
			$subArray = $arrIt->getSubIterator();
			if(!is_null($key2) && !is_null($value2))
			{
				if ($subArray == $value2 && $subArray == $value) {
					$results = iterator_to_array($subArray);
				}
			}
			else
			{
				if ($subArray === $value) {
					$results = iterator_to_array($subArray);
				}
			}
		}
		return $results;
	}
<?php...