[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: static переменные и методы в PHP зачем они нужны?
lodas
Здравствуйте уважаемые форумчане. Хочу разобраться в каких случаях нужно использовать в ООП static переменные и static методы?
Я понимаю что с ними можно работать за пределами класса не создавая объект, но в каких случаях это реально надо, приведите пожалуйста простенький пример для начинающего rolleyes.gif
И чем отличается вызов MyClass::method от self:: method?
Игорь_Vasinsky
статические переменные сохраняют своё значение в скрипте и не обнуляются сами, например в цикле часто использую.

раздел php в пользовательский функциях - рекурсия - статические переменные

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
lodas
Игорь_Vasinskyну это еще и сишного к нам пришло, а в ООП какое пременение static свойствам и методам?
AlmazDelDiablo
Пример из моего движка:

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

_____________
Блог | VK | GitHub | Twitch
lodas
AlmazDelDiablo, а можно простенький пример, а то тут не совсем понятно. покажи как ты используешь static на примере двух классов, и чтобы можно было наглядно видеть преимущества- что это действительно здесь необходимо?
AlmazDelDiablo
Упрощенный вариант:
<?php

error_reporting(E_ALL);

$c = new Controller();
$c->run();

/**
* Реестр классов. В нем хранятся все классы движка для быстрого и удоброго обращения к ним.
*/

class Register {

static private $objects = array();

static public function get( $name ) {
return self::$objects[$name];
}

static public function add( $name, $object ) {
self::$objects[$name] = $object;
}
}


/**
* Сделаем вид, что это контроллер, который подгружает некий модуль.
*/

class Controller {

public function run() {
require_once PATH .'classes/module.class.php';
Register::add( 'Module', new Module() );
}
}


/**
* Это — какая-нибудь часть движка, откуда происходит вызов какого-нибудь объекта.
*/

class Frame {

public function initModule() {
Register::get('Module')->init();
}
}


?>


Приминений для статических методов и свойств огромное множество. Всё их удобство — это доступ из любой части сайта без создания объекта.

_____________
Блог | VK | GitHub | Twitch
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.