<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3580028</guid>
        <pubDate>Fri, 06 Mar 2015 15:37:26 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3580028</link>
        <description><![CDATA[Serafim: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3580026'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Eremeev &#064; <time class="tag-quote__quoted-time" datetime="2015-03-06T15:13:45+00:00">06.03.15, 15:13</time></span><div class='quote '>ты еще про goto как то забыл упомянуть.</div></div><br>
Ну это само собой, я по этому случаю даже картиночку припрятал :yes: <br>
<br>
<span class="b-attach" data-size="25994" data-hits="974" data-attach-id="43977" data-attach-post-id="3580028">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3580028&amp;attach_id=43977' title='Скачать файл' target='_blank'>292_v1.png</a> (, : 974)
		</span><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3580026'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Eremeev &#064; <time class="tag-quote__quoted-time" datetime="2015-03-06T15:13:45+00:00">06.03.15, 15:13</time></span><div class='quote '>покажи мне как в этом коде обойтись без глобал.</div></div><br>
Ну чтож...<br>
<br>
Тупо статик:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class ServiceDB</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static function select_catalog_product_curr_day()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// ****</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">....</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public function curr_day_ButtonClick()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ServiceDb::select_catalog_product_cur...</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Singleton:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class ServiceDB</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private static $instance = null;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static function getInstance()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (static::$instance === null) { static::$instance = new static; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return static::$instance;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;private function __construct() {}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">ServiceDb::getInstance()-&#62;select...</div></ol></div></div></div></div><br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray">UPD: Скрыл лишнее, чтоб не портить психику</span><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Ещё Немного примеров как обойтись без глобалов</div><div class="body"><br>
<br>
Registry и Ioc:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class Registry extends ArrayAccess</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// переписывать всю реализацию ArrayAccess - лень, так что опускаю её</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;protected static $facadeInstance = null;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static function get($alias)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return static::$facadeInstance[$alias];</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static function resolve($alias, callable $instance)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return static::$facadeInstance[$alias] = $instance(static::$facadeInstance);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static function setFacade(Registry $self)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static::$facadeInstance = $self;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">Registry::setFacade(new Registry);</div><div class="code_line">&nbsp;</div><div class="code_line">Registry::resolve(&#39;service&#39;, function(){</div><div class="code_line">&nbsp;&nbsp; &nbsp;return new ServiceDb;</div><div class="code_line">});</div><div class="code_line">&nbsp;</div><div class="code_line">Registry::get(&#39;service&#39;)-&#62;select_catalog_product....</div></ol></div></div></div></div><br>
<br>
<br>
Dependency Injection:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">DiContainer::resolve(function(){ return new ServiceDb; });</div><div class="code_line">&nbsp;</div><div class="code_line">DiContainer::inject(Класс_с_методом_curr_day_ButtonClick::class);</div><div class="code_line">&nbsp;</div><div class="code_line">....</div><div class="code_line">public function curr_day_ButtonClick(ServiceDb $db)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;$db-&#62;select_catalog_.....</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<br>
Dependency Injection на аннотациях:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">DiContainer::resolve(function(){ return new ServiceDb; });</div><div class="code_line">&nbsp;</div><div class="code_line">DiContainer::inject(Класс_с_методом_curr_day_ButtonClick::class);</div><div class="code_line">&nbsp;</div><div class="code_line">/**</div><div class="code_line">&nbsp;* @DiContainer\Inject(db = &quot;ServiceDb&quot;)</div><div class="code_line">&nbsp;*/</div><div class="code_line">public function curr_day_ButtonClick($db)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;$db-&#62;select_catalog_.....</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Наследование:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">abstract class AbstractApplicationRegistry</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;protected static $container = [];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static remember($alias, $value)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; static::container[$alias] = $value;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public function __get($name) </div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return isset(static::$container[$name]) ? static::$container[$name] : null;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// В PHP 7.0: return static::$container[$name] ?? null;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">class Some extends AbstractApplicationRegistry</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;public function curr_day_ButtonClick($db)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$this-&#62;serviceDb-&#62;select_catalog_.....</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Трейты:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">trait ApplicationRegistry</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;protected static $container = [];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static remember($alias, $value)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; static::container[$alias] = $value;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public function __get($name) </div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return isset(static::$container[$name]) ? static::$container[$name] : null;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// В PHP 7.0: return static::$container[$name] ?? null;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">class Some</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;use ApplicationRegistry;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public function curr_day_ButtonClick($db)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$this-&#62;serviceDb-&#62;select_catalog_.....</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T18:50:24+03:00">06.03.15, 15:50</time></span></span><br>
О, ещё аннотациями можно:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">/**</div><div class="code_line">&nbsp;* @Annotation</div><div class="code_line">&nbsp;* @Target(&quot;CLASS&quot;)</div><div class="code_line">&nbsp;*/</div><div class="code_line">class Container</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private $container = [];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public function __construct(array $values)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$this-&#62;container = $values;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public function apply(ReflectionClass $context)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// тут выбираем нужные значения из общего контейнера данных и отправляем их в $context</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">/**</div><div class="code_line">&nbsp;* @Container(serviceDb = ServiceDb::class)</div><div class="code_line">&nbsp;*/</div><div class="code_line">class Some</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;public function curr_day_ButtonClick($db)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$this-&#62;serviceDb-&#62;select_catalog_.....</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T15:51:31+00:00">06.03.15, 15:51</time></span></span><br>
Плюс Композицию, как альтернативу наследованию никто не отменял :whistle: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T15:52:10+00:00">06.03.15, 15:52</time></span></span><br>
А ещё можно на этапе автолоада классов, через рефлексию внедрять объект контейнера с инстансами... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T15:53:18+00:00">06.03.15, 15:53</time></span></span><br>
А ещё можно хранить это всё в одном классе и вытаскивать через объект замыкания (Closure) с переносом контекста (bind или bindTo). Это кстати дико магический способ - я уже приводил в пример динамическое наследование, примерно так же и сделать: <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=399691' target='_blank'>Нужен пример неизменяемого класса и класса от которого нельзя наследоваться</a><br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T15:55:43+00:00">06.03.15, 15:55</time></span></span><br>
А ещё можно назначить свой поток (функция stream_wrapper_register), например &quot;inject://&quot; (как это сделано у меня <a class='tag-url' href='https://github.com/SerafimArts/Mirror/blob/master/src/Loader/Filter.php' target='_blank'>https://github.com/SerafimArts/Mirror/blob/...ader/Filter.php</a>)  и подменять реализацию классов вообще как угодно, делая с ними всё что угодно. Правда там токенизер нужен будет и лексер... И вообще это изврат. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T16:01:04+00:00">06.03.15, 16:01</time></span></span><br>
Ну что, ещё? :D Теперь предлагаю задавать вопросы, чтоб я показал более точную реализацию (полностью рабочий пример) и вы больше никогда в жизни не использовали глобалсы. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T16:03:56+00:00">06.03.15, 16:03</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3580028'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-03-06T15:37:26+00:00">06.03.15, 15:37</time></span><div class='quote '>Dependency Injection:</div></div><br>
есть кстати очень крутая либа для этого: <a class='tag-url' href='http://php-di.org/' target='_blank'>http://php-di.org/</a></div></div>]]></description>
        <author>Serafim</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3580026</guid>
        <pubDate>Fri, 06 Mar 2015 15:13:45 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3580026</link>
        <description><![CDATA[Eremeev: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Т.к. даже новички (тем более новички) и слышать не должны о наличии такой конструкции в языке, как глобалс</div></div><br>
вот они и не зная потом и задают такие вопросы, раз не должны знать.<br>
покажи мне как в этом коде обойтись без глобал.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;function curr_day_ButtonClick($sender, $params)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;global $Service_DB ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;$Service_DB-&#62;select_catalog_product_curr_day(date(&#39;Y-m-d&#39;),date(&#39;Y-m-d&#39;) , $_SESSION[&#39;id_f&#39;], $_SESSION[&#39;id_app&#39;]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><br>
ты еще про goto как то забыл упомянуть.]]></description>
        <author>Eremeev</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3580008</guid>
        <pubDate>Fri, 06 Mar 2015 14:45:22 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3580008</link>
        <description><![CDATA[Serafim: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3580005'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Eremeev &#064; <time class="tag-quote__quoted-time" datetime="2015-03-06T14:43:07+00:00">06.03.15, 14:43</time></span><div class='quote '>плохой код или плохое оформление кода?<br>
если кто то учится пхп, то уж не в первую очередь оформлению кода,<br>
а самим основам. а желание оформить потом само придет.<br>
мог бы и знать такие вещи, а не требовать закрытий топиков</div></div><br>
И то и другое. Я списочек специально написал ;) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T14:48:19+00:00">06.03.15, 14:48</time></span></span><br>
Но если на код стайл ещё пофигу, то ещё в сообщении #6 я обосновал причину такой своей бурной реакции. Т.к. даже новички (тем более новички) и слышать не должны о наличии такой конструкции в языке, как глобалс. ;)]]></description>
        <author>Serafim</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3580005</guid>
        <pubDate>Fri, 06 Mar 2015 14:43:07 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3580005</link>
        <description><![CDATA[Eremeev: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Если мои комментарии похожи на троллинг - прошу простить, но меня откровенно возмущает помощь по таким вопросам без замечания &quot;я тебе помогу, но это плохой код&quot; </div></div><br>
плохой код или плохое оформление кода?<br>
если кто то учится пхп, то уж не в первую очередь оформлению кода,<br>
а самим основам. а желание оформить потом само придет.<br>
мог бы и знать такие вещи, а не требовать закрытий топиков]]></description>
        <author>Eremeev</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579926</guid>
        <pubDate>Fri, 06 Mar 2015 11:24:07 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579926</link>
        <description><![CDATA[Serafim: Я просто слишком насмотрелся на такой код <a class='tag-url' href='https://github.com/codersclub/forum' target='_blank'>в исходниках нашего форума</a>, что бы просто так пройти мимо и не намекнуть на то, что писать такой код ни в коем случае нельзя. Для получения более подробной информации о качестве кода можно воспользоваться, например этим <a class='tag-url' href='https://scrutinizer-ci.com/' target='_blank'>https://scrutinizer-ci.com/</a> или похожей поделкой от сенсиолабс <a class='tag-url' href='https://insight.sensiolabs.com/' target='_blank'>https://insight.sensiolabs.com/</a><br>
<br>
Примеры работы обоих инструментов (мои опенсорсные проекты), с позволения г-на <strong class='tag-b'>vicis</strong> тут: <a class='tag-url' href='http://https://insight.sensiolabs.com/projects/aacfa41a-f6cb-42bb-976e-9d2f4c0b848c' target='_blank'>SensioLabs Insight</a> и <a class='tag-url' href='https://scrutinizer-ci.com/g/SerafimArts/Accessor/' target='_blank'>Scrutinizer Coninuous Integration</a>.<br>
<br>
Да, я приверженец идеального кода, т.к. исправление и поддержка совсем уж стрёмного потом обходится значительно дороже, как в плане денежной стоимости, так и в плане временных рамок - уже не раз сталкивался с подобными ситуациями.<br>
<br>
Если мои комментарии похожи на троллинг - прошу простить, но меня откровенно возмущает помощь по таким вопросам без замечания &quot;я тебе помогу, но это плохой код&quot; ;) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-03-06T11:31:02+00:00">06.03.15, 11:31</time></span></span><br>
В любом случае, что бы не быть голословным:<br>
<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">исходный код</div><div class="body"><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>  function Button1Click(&#036;sender, &#036;params)<br>
    {<br>
    global &#036;B;<br>
    &#036;B=new Memo;<br>
 <br>
    &#036;B-&gt;show();<br>
 <br>
    }<br>
    function Button3Click(&#036;sender, &#036;params)<br>
    {<br>
    var_dump(&#036;B);<br>
    }<br>
}<br>
 <br>
global &#036;application;<br>
global &#036;B;<br>
global &#036;Page11</div></div></div></div><br>
<br>
1) Использовать global крайне нежелательно.<br>
2) В методах Button3*** отсутствует упоминание видимости переменной, что противоречит стандартам Zend и PSR. Стандарт PEAR уже давно признан недееспособным.<br>
3) Переменные (&#036;B) пишутся в &#036;camelCase, начиная с <strong class='tag-b'>маленькой</strong> буквы: <a class='tag-url' href='http://www.php-fig.org/psr/psr-1/' target='_blank'>http://www.php-fig.org/psr/psr-1/</a> п.4.2.<br>
4) Названия методов пишутся в camelCase: <a class='tag-url' href='http://www.php-fig.org/psr/psr-1/' target='_blank'>http://www.php-fig.org/psr/psr-1/</a> п.4.3.<br>
5) Отсутствие отступов внутри методов. Внутри методов должен быть отступ в 4 пробела: <a class='tag-url' href='http://www.php-fig.org/psr/psr-2/' target='_blank'>http://www.php-fig.org/psr/psr-2/</a> п.2.4. (за исключением стандарта Wordpress, где рекомендуется использовать табы)<br>
<br>
 :whistle:]]></description>
        <author>Serafim</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579868</guid>
        <pubDate>Fri, 06 Mar 2015 09:52:39 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579868</link>
        <description><![CDATA[vicis: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3579336'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Eremeev &#064; <time class="tag-quote__quoted-time" datetime="2015-03-04T11:57:27+00:00">04.03.15, 11:57</time></span><div class='quote '>а на этом форуме есть возможность бана флудеров,троллей и т.д.</div></div><br>
дадим ему ещё шанс, хотя все признаки на лицо  :ph34r:]]></description>
        <author>vicis</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579683</guid>
        <pubDate>Thu, 05 Mar 2015 13:33:49 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579683</link>
        <description><![CDATA[Serafim: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3579336'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Eremeev &#064; <time class="tag-quote__quoted-time" datetime="2015-03-04T11:57:27+00:00">04.03.15, 11:57</time></span><div class='quote '>а на этом форуме есть возможность бана флудеров,троллей и т.д.</div></div><br>
Есть. Правда тебе осталось доказать, что тех людей, кто использует глобалсы не стоит отгорожать от сообщества разумных людей. :whistle:]]></description>
        <author>Serafim</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579336</guid>
        <pubDate>Wed, 04 Mar 2015 11:57:27 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579336</link>
        <description><![CDATA[Eremeev: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3579289'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-03-04T09:47:33+00:00">04.03.15, 09:47</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3579112'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ssaich &#064; <time class="tag-quote__quoted-time" datetime="2015-03-03T16:31:16+00:00">03.03.15, 16:31</time></span><div class='quote '> global</div></div><br>
Предлагаю нафиг закрыть и сжечь этот раздел :ph34r: ну пожааалуйста... :&#39;(</div></div><br>
а на этом форуме есть возможность бана флудеров,троллей и т.д.]]></description>
        <author>Eremeev</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579242</guid>
        <pubDate>Wed, 04 Mar 2015 07:55:07 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579242</link>
        <description><![CDATA[ssaich: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=400091&view=findpost&p=3579122'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Alex2011 &#064; <time class="tag-quote__quoted-time" datetime="2015-03-03T17:16:36+00:00">03.03.15, 17:16</time></span><div class='quote '>Каждый раз в функции надо добавлять global &#036;B; чтобы она ее видела. ( в самом начале перед первым  использованием в теле функции)</div></div><br>
Спасибо]]></description>
        <author>ssaich</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579122</guid>
        <pubDate>Tue, 03 Mar 2015 17:16:36 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579122</link>
        <description><![CDATA[Alex2011: Каждый раз в функции надо добавлять global &#036;B; чтобы она ее видела. ( в самом начале перед первым  использованием в теле функции)]]></description>
        <author>Alex2011</author>
        <category>Delphi for PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579112</guid>
        <pubDate>Tue, 03 Mar 2015 16:31:16 +0000</pubDate>
        <title>Переменные, видимость</title>
        <link>https://forum.sources.ru/index.php?showtopic=400091&amp;view=findpost&amp;p=3579112</link>
        <description><![CDATA[ssaich: есть у меня вот такой код<br>
<br>
(пробую вот рунтайм)<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;function Button1Click($sender, $params)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;global $B;</div><div class="code_line">&nbsp;&nbsp; &nbsp;$B=new Memo;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;$B-&#62;show();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;function Button3Click($sender, $params)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;var_dump($B);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">global $application;</div><div class="code_line">global $B;</div><div class="code_line">global $Page11</div></ol></div></div></div></div>;<br>
<br>
Мемо создается, НО....  переменная &#036;B  из кода <br>
 <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function Button3Click($sender, $params)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;var_dump($B);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><br>
пустая, хоть и описана как глобал, я что то не так делаю ? )]]></description>
        <author>ssaich</author>
        <category>Delphi for PHP</category>
      </item>
	
      </channel>
      </rss>
	