Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Namespace с помощью Классов и статичных методов, Минусы и плюсы такого применения 
:(
    Опции темы
mxt
Дата 11.11.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: нет
Всего: 1



Давно уже использую Классы со статичными методами в качестве namespace,


Код

class MyNamespace
{
   static public $a = 10;


   public static function test()
   {
       return "test";
   }


}

MyNamespace::$a;
MyNamespace::test();



минус в этом способе это то, что нельзя дописывать в class namespace стандартными способами

static методы и члены на то и расчитаны чтоб так использоваться,

Но хотелось бы узнать какие еще минусы есть у этого способа.

Это сообщение отредактировал(а) mxt - 11.11.2008, 21:17
--------------------
PM MAIL   Вверх
mr.fox
Дата 14.11.2008, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 13.3.2005
Где: Ирландия

Репутация: -1
Всего: 2



Цитата(mxt @  11.11.2008,  21:09 Найти цитируемый пост)
минус в этом способе это то, что нельзя дописывать в class namespace стандартными способами

Какимим еще "стандартными способами" ? smile Через инициализированный объект?

Цитата(mxt @  11.11.2008,  21:09 Найти цитируемый пост)
Но хотелось бы узнать какие еще минусы есть у этого способа.

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

Пример: 
Код



Class MySQL
{
  private $query;
  public static $object_count = 0;
  function __construct()
  {
  $this->object_count++;
 }
  public function setQuery($q)
  {
     $this->query = $q;
  }

 public function getQuery()
 {
    return $this -> query;
 }
}

//Объекты
$m1 = new  MySQL();
$m1 -> setQuery( "select 1=1");

$m2 = new  MySQL();
$m2 -> setQuery( "select 1=1");

//Статическая переменная (общая для двух объектов, которые создали выше)
echo MySQL::object_count;



Это сообщение отредактировал(а) mr.fox - 14.11.2008, 02:38
PM MAIL WWW ICQ   Вверх
mxt
Дата 14.11.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: нет
Всего: 1



Цитата(mr.fox @  14.11.2008,  02:37 Найти цитируемый пост)
Какимим еще "стандартными способами" ? smile Через инициализированный объект?

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


Цитата(mr.fox @  14.11.2008,  02:37 Найти цитируемый пост)
Статический и инстанционные типы - это две разные вещи, у них свои применения. 
Статический метод и переменная, остаются единичными для всех объектов класса, которые вы создадите. 

я не просил обьяснить что такое статика. это я знаю,
я просил рассказать об минусах использования классов  как namespace.


проводил тест, 
Код

class A
{
   static function b($a, $b)
   {
      return $a * $b;
   }
}

function b($a, $b)
{
   return $a * $b;
}


for ($i = 0; $i < 1000000; $i++)
   A::b($i, $i);


for ($i = 0; $i < 1000000; $i++)
   b($i, $i);

 первый цикл выполняется за ~1.25117183 c
 второй за  ~1.09764481 c

разница между ними ~0.15352702 c

тестировал на PHP 5.2.4


сейчас установлю PHP 5.3  и попробую с namespace,   интересно какая разница будет

Это сообщение отредактировал(а) mxt - 14.11.2008, 15:51
--------------------
PM MAIL   Вверх
mxt
Дата 14.11.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: нет
Всего: 1



провел тест на php 5.3 alpha 2;

итог:
1000000 вызывов обычной функции          : 0.49240398 c
1000000 вызывов статичного метода      : 0.73204803 c
1000000 вызывов функции из namespace : 0.52766204 c



удивило то, что php 5.3 стал быстрее чем php 5.2,  хотя может быть он у меня лучше компильнулся smile


а, все таки разработчики сделали обращение к namespace через ::  а не как задумывалось /
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.