[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: шаг за шагом
TMake
Вот решил разобратся более подробно в php, что бы небыло ни каких пробелов. Для этого взял за основу Joomla и постепенно постигаю всю структуру, но появились такие вопросы которые не могу по гуглить либо не точно понял(которые необходимо более доходчиво расстолковать). Все вопросы буду задавать здесь.

Помогите расшифровать что делает данная строчка (правильно ли я понял)
PHP
$_PROFILER =& JProfiler::getInstance'Application' );

данная строчка объединяет в себя 2 процесса
первый: создание нового объекта $_PROFILER =new JProfiler
второй: вызов из класса JProfiler метода getInstance( 'Application' )



Спустя 3 минуты, 26 секунд (29.06.2009 - 16:13) waldicom написал(а):
Я с жумлой не знаком, но выглядит как вызов паттерна "Одиночка" или Singleton

Спустя 3 минуты, 49 секунд (29.06.2009 - 16:17) glock18 написал(а):
у класса JProfiler есть статический метод getInstance

вот он собственно и вызывается.

про static можешь почитать заодно

Спустя 20 минут, 2 секунды (29.06.2009 - 16:37) stepan написал(а):
про статические переменные уже прочитал, смысл понял, а вот смысл от статических функций непонял. Написанно что отличие статической фукции от простой тем что она с большим объемом работатет быстрей.
Цитата (glock18 @ 29.06.2009 - 13:17)
у класса JProfiler есть статический метод getInstance

вот он собственно и вызывается.

А вот это что означает
$_PROFILER =&
(результат сохронять сохроняет или объект создает за одно). там просто далее идет вот это:
да заодно что оно означает а то вообще в этом ни чего не понял (наверное условие какоето)
PHP
JDEBUG $_PROFILER->mark'afterLoad' ) : null;

Спустя 3 минуты (29.06.2009 - 16:40) waldicom написал(а):
Статическая функция вызывается без создания объекта. А для вызова нормальной функции обязательно надо создать объект.

Спустя 4 минуты, 42 секунды (29.06.2009 - 16:45) glock18 написал(а):
=& это значит, что по ссылочке копирует.

методы статические лично я использую очень часто. причина как раз в том, что указал waldicom. Если нет работы с конкретно объектом (нет необходимости использовать $this), то по-любому делаю функцию статичной.

Спустя 57 секунд (29.06.2009 - 16:46) stepan написал(а):
Цитата (waldicom @ 29.06.2009 - 13:40)
Статическая функция вызывается без создания объекта. А для вызова нормальной функции обязательно надо создать объект.

Ах вот оно что "как ве интересно" rolleyes.gif
а вот это что с чем сравнивается для получение, если истина, значения null
PHP
JDEBUG $_PROFILER->mark'afterLoad' ) : null;

Спустя 4 минуты, 1 секунда (29.06.2009 - 16:50) glock18 написал(а):
stepan
лично я думаю, что смысл такой у этой всей штуки (вывод сделал только по этой строке):

ты получаешь сущность какого-то модуля или еще как назови. Здесь - Application. Вероятно, $_PROFILER после этой строки содержит объект, но не факт, объект создается. Потому что (я опять же просто предполагаю) у JProfiler есть какие-то синглтоны или просто статические члены (что в общем почти одно и то же). Так вот этот метод по всей видимости возвращает ссылку на такой объект. А объект может быть создан раньше.

Спустя 33 секунды (29.06.2009 - 16:50) glock18 написал(а):
Цитата (stepan @ 29.06.2009 - 13:46)
Ах вот оно что "как ве интересно"

ага smile.gif Я был просто в восторге от этого открытия smile.gif

Спустя 19 часов, 45 минут (30.06.2009 - 12:35) stepan написал(а):
Как вот это можно перевести на русский язык?
PHP
$mode = ($flags FILE_APPEND) ?
$mode 'a' :
$mode 'w';

Спустя 7 минут, 23 секунды (30.06.2009 - 12:43) glock18 написал(а):
stepan, это бред, который к сожалению будет работать. Запиши это в одну строку и потом попробуй выполни

PHP
$a $a 3;


и ты сразу поймешь что там делается.

Спустя 5 минут, 34 секунды (30.06.2009 - 12:48) waldicom написал(а):
Цитата (stepan @ 30.06.2009 - 11:35)
Как вот это можно перевести на русский язык?
PHP
$mode = ($flags & FILE_APPEND) ?
$mode = 'a' :
$mode = 'w';

$mode будет равен 'a', если установлен флаг FILE_APPEND, иначе $mode будет равен 'w'.
Скорее всего речь идет о записи в файл и здесь выбираются режимы записи: добавлять в файл или перезаписывать.

Спустя 19 минут, 21 секунда (30.06.2009 - 13:07) stepan написал(а):
blink.gif Пока разбирался сам запутался, как работает joomla с шаблонами (алгоритм), исправте если что то не так:
Joomla берет в переменную шаблон, затем отслеживает регулярки которые затем используются для своего усмотрения (текста, изображения и т.д.)
На самом деле я этого там не нашел, там лишь движек и взаимодействие с шаблоном не видать, если вы ни знаете на примере joomla расскажите как это вы сами представляете?

Спустя 2 часа, 30 минут, 23 секунды (30.06.2009 - 15:38) glock18 написал(а):
эт не знай. я джумлом не арбайтал.

Спустя 42 минуты, 54 секунды (30.06.2009 - 16:21) waldicom написал(а):
Тут не "шаг за шагом" получается, а "выкиньте чувака с лодки в открытом море - может быть научится плавать". Зачем начинать с такого монстра. Ты уже знаком с ООП?

Спустя 16 часов, 51 минута, 42 секунды (1.07.2009 - 09:12) stepan написал(а):
Цитата (waldicom @ 30.06.2009 - 13:21)
Тут не "шаг за шагом" получается, а "выкиньте чувака с лодки в открытом море - может быть научится плавать". Зачем начинать с такого монстра.

У меня есть необходимость разобраться как строица и работает CMS в тонкостях (из нутри) для того что бы уже попытаться своего (корявого) монстра создать.
Сама цель у меня вот какая:
Мне необходимо сделать не саму CMS а ее ядро основную часть, для того что бы при создании какого то нового проекта мне уже не приходилось писать весь сайт с нуля, а достаточно было только взять нужные модули и творить шедевр/монстра.
Цитата (waldicom @ 30.06.2009 - 13:21)
Ты уже знаком с ООП?

Я уже знаком с ООП.

Спустя 18 минут, 43 секунды (1.07.2009 - 09:31) glock18 написал(а):
Ну вообще, замысел твой я поддерживаю. Сам собственно так и делаю. Но для написания сайтов самому, я бы тебе предложил разбирать не CMS, а какой-нибудь фреймворк.

А насчет ООП. Я думаю, что ты знаком с ним, но достаточно поверхностно в плане фич ООП в пхп. Почитай про статические переменные, про систему ссылок (типа
PHP
Base::app()->request->baseUrl;
), про, собственно, ссылки, про отложенное копирование и т.п.

кстати приведенная выше строка может работать даже если у нужных классов нет членов request и baseUrl. Для этого надо кое-что сделать wink.gif

Я бы тебе посоветовал взять какой-нибудь чистый php5 фреймворк и копаться в нем. Такие есть, а то, что он работает чисто с php5, дает ему возможность использовать все фичи, которые там есть. А фич там по сравнению с php4 вагон и маленькая тележка smile.gif

Спустя 42 минуты, 3 секунды (1.07.2009 - 10:13) stepan написал(а):
Подскажите какой наиболее удачный фремворк будет?
Что скажете насчет Symfony?

Спустя 12 минут, 25 секунд (1.07.2009 - 10:26) glock18 написал(а):
я только с Yii работал smile.gif но остался доволен этим опытом. Еще неплохим считается, kohana и, если бы я выбирал сейчас, то взял бы akelos.

Symfony не знаю, но кажется, что symfony как и cakephp, codeigniter, zf работает и с 4 php. Я бы их посмотрел разве что для интереса. Зенд смотрел кстати... yii больше понравился.

Спустя 12 минут, 42 секунды (1.07.2009 - 10:38) stepan написал(а):
Не symfony с php4 не работает, только с php5, но лучши пойду по совету и взгляну на akelos, на крайняк kohana. Спосибо.

Спустя 1 час, 11 минут, 11 секунд (1.07.2009 - 11:50) stepan написал(а):
Скачал akelos поставил все запустилось, но сразу возник вопрос как заработал?
Я открываю стартовый файл и вижу там всего 2 строчки вот что
PHP
define('AK_INSECURE_APP_DIRECTORY_LAYOUT'true);
include(
'public'.DIRECTORY_SEPARATOR.'index.php');

blink.gif Это что пулучается он сам себя инклудит? blink.gif

Спустя 9 минут, 27 секунд (1.07.2009 - 11:59) glock18 написал(а):
ээ)) я не смотрел, но явно нет. смотри путь то smile.gif там папка стоит перед ним.

Спустя 18 минут, 5 секунд (1.07.2009 - 12:17) stepan написал(а):
laugh.gif я протупил и подумал что это какое то свойство как в статическом методе.

Спустя 21 минута, 9 секунд (1.07.2009 - 12:38) glock18 написал(а):
stepan
не надумывай. все на самом деле очень просто.

Спустя 13 минут, 34 секунды (1.07.2009 - 12:52) stepan написал(а):
Я надеюсь, но пока для меня это дремучий лес.
Вот создал он мне БД и выводит прирывание, что он мне говорит я ни чего не пойму:
Цитата
Getting started
1. Use script/generate to create your models and controllers
To see all available options, run it without parameters.
2. Set up a default routes (config/routes.php) or edit the default controller (app/controllers/page_controller.php)

Спустя 7 минут, 7 секунд (1.07.2009 - 12:59) glock18 написал(а):
паттерн проектирования MVC почитай. Model-view-controller. А если с английским непонятки, то словарь и вперед smile.gif

Спустя 2 часа, 4 минуты, 26 секунд (1.07.2009 - 15:03) stepan написал(а):
Если кому интересно очень простое описание MVC.
По поводу ООП тоже почитал, если ни правильно то поправти:
Статические переменные в классах, как я понял, это те переменные которые даже после завершение функции остаются т.е. все что они хнанят не удаляется.
А про систему ссылок и отложенное копирование ни чего не нашел.
Да и что означает эта строка:
PHP
Base::app()->request->baseUrl;

Вызов в классе Base из статического метода app() переменных request и baseUrl.

Спустя 22 минуты, 35 секунд (1.07.2009 - 15:26) glock18 написал(а):
stepan
Ну не без доли правды smile.gif

Цитата (stepan @ 1.07.2009 - 12:03)
Статические переменные в классах, как я понял, это те переменные которые даже после завершение функции остаются т.е. все что они хнанят не удаляется.

Определение статических переменных больше подходит к статическим переменным в C, которые объявляются внутри функции.

В php статические переменные по аналогии с функциями. То есть - эти переменные доступны без создания объектов класса. Одна переменная на весь класс вместе с экземплярами (некоторые воплощение паттерна "синглтон").

Цитата (stepan @ 1.07.2009 - 12:03)
А про систему ссылок и отложенное копирование ни чего не нашел.


а вот это как раз
Цитата (stepan @ 1.07.2009 - 12:03)
Base::app()->request->baseUrl;


в php 4 невозможна такая запись.

пришлось бы писать каждое обращение к элементу на отдельной строке.

Цитата (stepan @ 1.07.2009 - 12:03)
Вызов в классе Base из статического метода app() переменных request и baseUrl.

это я не понял совсем. Очень напоминает "что вижу то и читаю, а вижу буковки" smile.gif

Как раз смысл вот в чем. Base::app() возвращает объект. php запоминает ссылку на этот объект, и ты можешь продолжить работать с тем, что возвращает эта функция, как с объектом. И так далее.

А насчет отложенного копирования еще поищи.

Цитата (glock18 @ 1.07.2009 - 06:31)
стати приведенная выше строка может работать даже если у нужных классов нет членов request и baseUrl. Для этого надо кое-что сделать

кстати над этим тоже подумай. Если знаком с C#, то там есть подобный механизм wink.gif

Спустя 5 минут, 5 секунд (1.07.2009 - 15:31) glock18 написал(а):
Объяснение MVC мне не понравилось. Наверно, потому что
Цитата (stepan @ 1.07.2009 - 12:03)
очень простое описание

есть несколько мелких ошибок в определениях, и на UML-диаграммах тоже мелочи кое-где заметил.

В целом, статья дает понимание MVC, но почитай что-нибудь еще. Уже не такое простое smile.gif

Спустя 2 минуты, 20 секунд (1.07.2009 - 15:33) waldicom написал(а):
Цитата
Я уже знаком с ООП.

Че-то судя по возникающим вопросам не видно...

Спустя 8 минут, 11 секунд (1.07.2009 - 15:42) glock18 написал(а):
waldicom
Может "знаком" как раз подходящее определение? wink.gif потому знать, не знает, но знаком... немного smile.gif

Спустя 2 минуты, 31 секунда (1.07.2009 - 15:44) stepan написал(а):
В общих чертах все понял попробую на основи MVC простейший движек написать, а там будет видно.
Цитата (glock18 @ 1.07.2009 - 12:26)
кстати над этим тоже подумай. Если знаком с C#, то там есть подобный механизм  wink.gif

Посмотрю, а в C# там все еще хуже там я лишь поверхностно знаком и о таких вещах даже ни мечтаю.
Цитата (waldicom @ 1.07.2009 - 12:33)
Че-то судя по возникаюзим вопросам не видно...

Но я и не утверждал что я его знаю профессионально, так знаю как переводится в общих чертах.

Спустя 20 часов, 38 минут, 16 секунд (2.07.2009 - 12:22) stepan написал(а):
Подскажите пожалус вот в этой строчки self тоже класс или это какое то спец.выражение (я просто не могу найти этот класс)
PHP
self::$timer_start microtime(1);

Спустя 4 часа, 5 минут, 25 секунд (2.07.2009 - 16:28) stepan написал(а):
Мой первый ООП скрипт скажите что сделанно ни совсем корректно (это пробник):

index.php:
PHP
define ('DOC_ROOT',dirname(__FILE__));
define ('DS'DIRECTORY_SEPARATOR);
require_once(
DOC_ROOT.DS."mod".DS."system".DS."system.php");
require_once(
DOC_ROOT.DS."config.php");
require_once(
DOC_ROOT.DS.'templates'.DS.'index.php');
$System=new System();
$System->Process();

system.php:
PHP
class System{
var 
$result;
function 
Process(){
$mod_read=new mod_read();
$mod_read->read_text('index.wbr');
$this->result=$mod_read->get_text();
//вывод на экран
view::displayDefault($this->result);
}
static function 
import_class($class_file){
if(
is_file($class_file)){
require_once(
$class_file);
}
}
}

config.php
PHP
System::import_class(DOC_ROOT.DS.'mod'.DS.'date'.DS.'mod_read.php');

mod_read.php:
PHP
class mod_read{
var 
$text;
function 
read_text($href){
$dir=DOC_ROOT.DS.'db'.DS.'content'.DS;
$all_dir=$dir.$href;
if(
is_file($all_dir)){
$fo=fopen($all_dir"r");
$this->text=fread($fofilesize($all_dir));
fclose($fo);
}
}
function 
get_text(){
return 
$this->text;
}
}

Спустя 53 минуты, 58 секунд (2.07.2009 - 17:22) glock18 написал(а):
1. у тебя есть DOC_ROOT, но еще неплохо бы где-нибудь иметь виртуальный путь в папку с проектом. на случай если он не в корне хоста. часто ли сейчас такое бывает не знаю, но у меня на компе всегда только один хост - локалхост.

2. ООП в стиле php4. признаки var и ниодного модификатора видимости функций.

а в целом остальное, вроде неплохо.

Спустя 58 минут, 51 секунда (2.07.2009 - 18:21) Sylex написал(а):
stepan
PHP
define ('DS'DIRECTORY_SEPARATOR);
define ('DOC_ROOT',dirname(__FILE__).DS);
require_once(
DOC_ROOT."mod".DS."system".DS."system.php");
...


так лучше поди

до ООП тебе далеко ИМХО, освой процедурный сначала (без обид)

Спустя 10 минут, 1 секунда (2.07.2009 - 18:31) glock18 написал(а):
Sylex
а я не вижу ничего плохого в том коде, что ты привел. разъяснишь?

Спустя 1 минута, 1 секунда (2.07.2009 - 18:32) Krevedko написал(а):
кстати господа профессионалы. где можно почитать про ООП, чтобы доходчиво было написано, а то я стал читать, не понял для чего это...тама про всяких львов Банифациев написано, которые рычат biggrin.gif

Спустя 36 минут, 25 секунд (2.07.2009 - 19:08) glock18 написал(а):
я читал в "Полный справочник по С++, 4 издание", Герберт Шилдт smile.gif там нормально, насколько я помню, расписано. ООП везде имеет одни и те же принципе с маленькими особенностями в каждом языке.

Спустя 2 часа, 10 минут, 52 секунды (2.07.2009 - 21:19) Sylex написал(а):
Krevedko
читай Гради Буча

Цитата ("glock18")
а я не вижу ничего плохого в том коде, что ты привел. разъяснишь?


в том что я привел - я тоже ничего не вижу плохого, я просто добавил разделитель пути в константу DOC_ROOT для удобства, т.к. все равно ее везде пишем smile.gif

а что касается кода stepanа, то в частности классов - то я не вижу целесообразности создания классов в том примере. Потом эта привычка "входит в моду", и люди используют классы везде где это можно/возможно/нужно/не нужно. Тем более он занялся изучением движка, и как я понял, собирается написать свой.

Оформление кода, комментарии, названия методов и переменных, на мой взгляд, имеют большое значение в разработке.

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

Мой совет:
Изучить побольше теории, почитать книжек, а потом начать писать движки. Все равно их придется переписывать, зато - опыт smile.gif.

Спустя 1 час, 17 минут, 15 секунд (2.07.2009 - 22:36) glock18 написал(а):
Цитата (Sylex @ 2.07.2009 - 18:19)
Мой совет:
Изучить побольше теории, почитать книжек, а потом начать писать движки. Все равно их придется переписывать, зато - опыт smile.gif.


вот это верно. ну и то, что выше, тоже верно smile.gif

поддерживаю совет и дополню немного:

stepan, ты только начал разбираться в других движках. Все таки для того, чтобы написать свой нужно прекрасно понимать что, как и зачем. Пока все таки твои знания несколько поверхностны.
Лучше почитай еще теории и побольше покопайся в других движках. Когда придет понимание что там и зачем (будешь налету видеть "нафиг там эта штука") - вот момент истины smile.gif

Цитата (Sylex @ 2.07.2009 - 18:19)
Оформление кода, комментарии, названия методов и переменных, на мой взгляд, имеют большое значение в разработке.

Абсолютно бесспорно. Присоединяюсь и к этому.

Спустя 11 часов, 6 минут, 48 секунд (3.07.2009 - 09:43) stepan написал(а):
Sylex, glock18 все уснил спасибо, буду грысть гаринит науки программирования.
Быстрый ответ:

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