Хранение моего симпатичного PHP

Идея заключается в том, что для соображений скорости и кеширования операнды должны считываться с адресов, соответствующих их естественному размеру. Чтобы это произошло, элементы структуры компоновщика компилируются так, чтобы следующий член или следующая структура были выровнены.

struct pixel {
    unsigned char red;   // 0
    unsigned char green; // 1
    unsigned int alpha;  // 4 (gotta skip to an aligned offset)
    unsigned char blue;  // 8 (then skip 9 10 11)
};

// next offset: 12

Архитектура x86 всегда могла извлекать неверные адреса. Тем не менее, он медленнее, и когда несоосность перекрывает две разные строки кэша, тогда он вытесняет две строки кэша, когда выровненный доступ будет вытеснять только один.

Некоторым архитектурам на самом деле приходится ловить ложные недочетые чтения и записи и ранние версии архитектуры ARM (той, которая развивалась во всех современных мобильных процессорах) ... ну, на самом деле они просто вернули для них плохие данные. (Они проигнорировали младшие разряды.)

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

Значения TL; DR: важны.

11
задан Factor Mystic 22 September 2008 в 04:11
поделиться

14 ответов

Не паникуйте, каждая новая веб-поверхность программиста эта проблема.

НЕОБХОДИМО разделить логику программы от дисплея. Во-первых, попытайтесь сделать свое собственное решение с помощью двух файлов для каждой Веб-страницы:

  • один только с кодом PHP (никакой HTML), который заполняет переменные
  • другой с HTML и очень немногими PHP: это - Ваш дизайн страницы

Затем включайте, где / при необходимости в нем. НАПРИМЕР:

myPageLogic.php

<?php

// pure PHP code, no HTML

$name = htmlspecialchars($_GET['name']);
$age = date('Y') - htmlspecialchars($_GET['age']);

?>

myPageView.php

// very few php code
// just enought to print variables
// and some if / else, or foreach to manage the data stream

<h1>Hello, <?php $name ?> !</h1>

<p>So your are <?php $age?>, hu ?</p>

(Можно хотеть использовать альтернативный синтаксис PHP для этого. Но не пытайтесь трудно, чтобы заставить его усовершенствовать в первый раз, действительно.)

myPage.php

<?php

require('myPageLogic.php');
require('myPageView.php');
?>

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

Затем однажды Ваш довольны этим понятием, купите книгу о шаблоне MVC (или ищите записи переполнения стека об этом). Это, что Вы хотите сделать ВРЕМЯ NEXT. Затем Вы попробуете некоторые системы шаблонной обработки и платформы, но ПОЗЖЕ. На данный момент просто кодируйте и учитесь с начала. Можно отлично кодировать проект как этот как новобранец, он прекрасен.

26
ответ дан 3 December 2019 в 01:24
поделиться

Я думаю, что Вы имеете две опции здесь, или используете Платформу MVC или используете ленивую шаблонную обработку путь, который поместил бы значительные издержки в Ваш код. Очевидно, я с первым, я думаю, узнавая, что MVC является одним из лучших приемов веб-разработки в книге.

0
ответ дан 3 December 2019 в 01:24
поделиться

Проверьте этот вопрос о разделении PHP и HTML, существуют различные способы сделать это, включая сам записанные системы шаблонной обработки, шаблонная обработка систем, таких как Присяжный острослов, PHP как система шаблонной обработки на своем собственном, и т.д. и т.д. и т.д...

0
ответ дан 3 December 2019 в 01:24
поделиться

В земельном участке реализации систем шаблонной обработки сверху системы шаблонной обработки (сам PHP), создавая наверху на значение по умолчанию, можно пойти для большего надежного решения как Преобразования XSL, которое также выполняет MVC princples (если Вы разделяете свой поиск данных; плюс, я лично разделил логику от отображения XML с различными файлами).

Предположите иметь следующую информацию в массиве, который Вы хотите отобразить в таблице.

Array
{
  [car] => green
  [bike] => red
}

Вы легко создаете сценарий, который производит эту информацию в XML:

echo "<VEHICLES>\n";
foreach(array_keys($aVehicles) as $sVehicle)
  echo "\t<VEHICLE>".$sVehicle."</NAME><COLOR>".$aVehicles[$sVehicle]."</COLOR></VEHICLE>\n";
echo "</VEHICLES>\n";

Приведение к следующему XML:

<VEHICLES>
  <VEHICLE>
    <NAME>car</NAME>
    <COLOR>green</COLOR>
  </VEHICLE>
  <VEHICLE>
    <NAME>bike</NAME>
    <COLOR>red</COLOR>
  </VEHICLE>
</VEHICLES>

Теперь это все превосходно, но это не отобразится в хорошем формате. Это - то, где XSLT входит. С некоторым простым кодом можно преобразовать это в таблицу:

<xsl:template match="VEHICLES">
  <TABLE>
    <xsl:apply-templates select="VEHICLE">
  </TABLE>
</xsl:template>

<xsl:template match="VEHICLE">
  <TR>
    <TD><xsl:value-of select="NAME"></TD>
    <TD><xsl:value-of select="COLOR"></TD>
  </TR>
</xsl:template>

И вуаля, Вы имеете:

<TABLE>
  <TR>
    <TD>car</TD>
    <TD>green</TD>
  </TR>
  <TR>
    <TD>bike</TD>
    <TD>red</TD>
  </TR>
</TABLE>

Теперь для этого простого примера, это - немного излишества; но для сложных структур в больших проектах, это - абсолютный способ держать Вашу логику сценариев отдельно от Вашей разметки.

0
ответ дан 3 December 2019 в 01:24
поделиться

Вам нужна платформа. Это не только сделает Ваш код симпатичным (из-за уже упомянутого шаблона образцового контроллера представления, MVC) - он сэкономит Вам время из-за компонентов, которые уже записаны для него.

Я рекомендую QCodo, это удивительно; существуют другие - CakePHP, Symfony.

0
ответ дан 3 December 2019 в 01:24
поделиться

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

например,

if ($_SESSION['logged_in'])
     include(TPL_DIR . 'main_logged_in.tpl'); 
else
     include(tPL_DIR . 'main.tpl');

просто простой пример

0
ответ дан 3 December 2019 в 01:24
поделиться

Я настоятельно рекомендую ученого вместо присяжного острослова,

  • Вы не должны изучать новую шаблонную обработку "язык" для создания шаблонов, шаблоны ученого записаны в php
  • если Вы не хотите использовать php, можно определить собственный шаблон "язык" с компилятором
  • это является легко растяжимым Вашими собственными объектами php

Разделение логики от презентации не означает, что все, Вы, которыми бизнес-логика должна быть в php и Вашей логике представления в чем-то еще, разделение, являетесь концептуальной вещью, Вы hae для разделения логики, которая готовит данные, формирует тот, который показывает его. Очевидно, бизнес-логика не должна содержать элементы презентации.

0
ответ дан 3 December 2019 в 01:24
поделиться

как упомянуто выше.. Вы фиксируете признак, не проблему..

То, в чем Вы нуждаетесь, является разделением логики и презентацией. Который может быть сделан со своего рода mvc платформой. Даже если Вы не хотите идти полностью с mvc платформой.. Механизм шаблонной обработки - необходимость, по крайней мере, если Ваша логика является сложной достаточно, что Вы испытываете затруднения из-за того, что Вы объясняете

0
ответ дан 3 December 2019 в 01:24
поделиться

В случаях как этот я пишу все инкрементно в переменную или иногда массив и затем повторяю переменную/массив. Это имеет добавленное преимущество, которое страница всегда представляет сразу, а не прогрессивно.

0
ответ дан 3 December 2019 в 01:24
поделиться

От звука Вашей проблемы кажется, что у Вас не могло бы быть большого разделения между логикой и презентацией в Вашем коде. При разработке приложения это - очень важный фактор по причинам, точно продемонстрированным ситуацией в настоящее время направление.

Если бы Вы уже не имеете, я смотрел бы на некоторый PHP шаблонная обработка механизмов, таких как Присяжный острослов.

1
ответ дан 3 December 2019 в 01:24
поделиться

При выполнении, который, однако, заставляет мой код php выглядеть ужасающим..., он действительно смешивает с форматированием и "формой" кода. Как я должен обойти это?

Рассматривайте свой PHP и HTML как единственная иерархия с единственной, последовательной структурой добавления отступа. Так структура включения PHP такой как, 'если' или 'для' представляет новый уровень добавления отступа и его содержание, всегда сбалансированный набор запуска и конечных тэгов. По существу Вы делаете свое 'правильно построенное' PHP в смысле термина XML, используете ли Вы на самом деле XHTML.

Пример:

<div class="prettybox">
    Hello <?php echo(htmlspecialchars($name)) ?>!
    Your food:
    <?php foreach($foods as $food) { ?>
        <a href="/food.php?food=<?php echo(urlencode($food)) ?>">
            <?php echo(htmlspecialchars($food)) ?>
        </a>
    <?php } ?>
    <?php if (count($foods)==0) { ?>
        (no food today)
    <?php } ?>
</div>

Опасайтесь религиозной догмы вокруг разделения логики и разметки, возникающей в ответах здесь снова. Пока, конечно, Вы хотите не допустить свою бизнес-логику в Ваш выходной код страницы, это не обязательно означает, что загрузка издержек от использования отдельных файлов, классов, шаблонов и платформ действительно необходима для того, что Вы делаете. Для простого приложения это, вероятно, будет достаточно только для помещения материала действия/логики наверху файла и вывода страницы ниже.

(Например, из одного из комментариев выше, делая htmlspecialchars () произведенная страницей функциональность, Вы определенно не хотите вставлять бит действия своего PHP, перепутанного во всей бизнес-логике. Всегда сохраняйте текст как простые, незавершенные строки до точки, где это оставляет Вашу прикладную логику. Если ввод 'эха (htmlspecialchars (...))' все время слишком многословен, можно всегда делать функцию с кратким названием как 'h', который делает то же.)

2
ответ дан 3 December 2019 в 01:24
поделиться

Попытайтесь разделить свое содержание и расположение из Вашего кода как можно больше. Какое-либо время, которое Вы пишете какому-либо HTML в .php файле, останавливаются и думают, что "Это действительно принадлежит здесь?"

Одно решение состоит в том, чтобы использовать шаблоны. Посмотрите на Присяжного острослова, обрабатывающего систему по шаблону для довольно простой в использовании опции.

4
ответ дан 3 December 2019 в 01:24
поделиться

Используйте подход mvc.

http://www.phpmvc.net/

Это не что-то, что Вы возьмете через несколько часов. Действительно необходимо практиковать его. Главным является контроллер, получит доступ к Вашей модели (слой дб), действительно наполните к своим данным и затем отправьте их в представление для рендеринга. Это упрощено, но просто необходимо считать и практиковать его для понимания его.

Это - что-то, что я раньше помогал мне изучить это. http://www.onlamp.com/pub/a/php/2005/09/15/mvc_intro.html

8
ответ дан 3 December 2019 в 01:24
поделиться

То, что я заканчиваю тем, что делал в этой ситуации, создает 'шаблонные' файлы данных HTML, которые я Включаю и затем анализирую через с регулярными выражениями. Это содержит код в чистоте и помогает передать части разработчику или другому человеку HTML.

Проверьте идеалы позади практик программирования MVC в Википедии

0
ответ дан 3 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: