Есть ли "правильный" способ использовать php? - PullRequest
5 голосов
/ 21 октября 2010

Я изучал php, просто подключившись к нему.

Я надеялся, что кто-то может указать мне правильное направление в отношении безопасности, потока и общих лучших практик?

Спасибо.

редактировать -

Полагаю, лучший способ выразить то, что я пытаюсь спросить, это .. Какова лучшая практика:
1.) при обработке форм с помощью php, получите vs post, $ _REQUEST vs $ _GET & $ _POST
2.) при динамическом создании файлов HTML (пример ниже)
3.) логины и аутентификация в том же файле, что и создатель формы
4.) Отправка электронной почты с php

С № 2 выше

<?php
echo "<h1> Welcome </h1>";

if ($_SESSION['type'] == "admin")
{
//lots of html in the echo statment
echo "tables and admin interface here";
} else
{
//lots of html in the echo statment
echo "tables and user dashboard here";
}
?>

--VS--


<h1> Welcome </h1>

<?php
if ($_SESSION['type'] == "admin")
{
 ?>
lots of html in the echo statment    
tables and admin interface here 
<?php
} else
{
 ?>
lots of html in the echo statment    
ables and user dashboard here    
<?php
}
?>

--VS-- 

<?php if($_SESSION['username']): ?>

<p>You are logged in as <?=$_SESSION['username']?></p>

<p><a href="?logout=1">Logout</a></p>

<?php endif; ?>

пс: Спасибо всем, кто уже ответил. Могу ли я также узнать, где фреймворк подходит? Я взял урок в ООП, и мы не познакомились ни с какими фреймворками.

Я много читаю на платформах Symfony и Zend, но все еще в замешательстве.

еще раз спасибо.

Ответы [ 7 ]

9 голосов
/ 21 октября 2010

Хорошее программирование не имеет отношения к языку. Я предлагаю вам начать изучение таких концепций разработки программного обеспечения, как объектно-ориентированное программирование, шаблоны проектирования, разделение задач, повторное использование, инкапсуляция, тестирование и рефакторинг. Начните с любого из них и продолжайте «вставлять» в список, и вы поправитесь.

PHP - изучите принятый стандарт кодирования, такой как PEAR или Zend . После того как вы освоили некоторые концепции, выберите хороший справочник, например, одну из лучших платформ, упомянутых в других ответах - Zend Framework, CakePHP, Symfony и др.

5 голосов
/ 21 октября 2010

Сообщество PHP никогда не было сильным в предложении каких-либо рекомендаций по разработке или пропаганде лучших практик. В предварительные рамки типичный PHP-код, написанный большинством разработчиков, был очень дилетантским и неорганизованным - см. Исходный код Wordpress. Но PHP - хороший язык для веб-приложений. Это было сделано для Интернета, и вы можете написать хороший профессиональный код с ним, если хотите. Это модно разбивать, но не обращать на это внимание.

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

  • Kohana => хороший, но плохо документированный со слабым сообществом. пропустить это.
  • Zend => самый популярный фреймворк для php с хорошими документами, но еще один плохой исполнитель, поскольку он перегружен объектами и шаблонами, пытаясь быть чрезмерно предприимчивым.
  • Cake & Symfony => являются фреймворками php 1-го поколения и также имеют репутацию плохой производительности. Я бы пропустил оба. Новая версия Symfony находится в разработке, но не готова.
  • Lithium => передовые новые рамки под руководством одного из разработчиков Cake. используя php 5.3 и утверждает, что быстро. НО, пока не в v.1 и также есть плохие документы на данный момент => http://li3.me.

Codeigniter => популярные, быстрые, хорошие документы и сообщество. очень легко учиться. v2.0 официально не выпущен, но готов к использованию и предназначен только для php5. Вы можете использовать ту же документацию, что и на сайте CI для v1.7. Версии очень похожи, за исключением поддержки 2.0 drop php 4. Вот загрузка для 2.0: http://bitbucket.org/ellislab/codeigniter/

YII => Действительно набирает обороты, несмотря на глупое имя. Это быстрый исполнитель с отличной документацией и множеством функций. Новая книга тоже вышла. Сообщество так себе, но растет. Этот каркас IMO берет много от рельсов. Там веб-код инструмент генерации и использует активную запись. http://yiiframework.com/

вы можете создавать приложения намного быстрее с YII из-за кода и активной записи, но это будет немного сложнее, чем CI. Вы можете столкнуться с тем, что это все больше мешает вам, когда вы пытаетесь делать все по-другому. CI более гибок - дает вам основу, которая вам нужна, и не мешает вам. Так что сейчас я бы порекомендовал codeigniter.

удачи!

5 голосов
/ 21 октября 2010

Используйте свободно доступные рамки, такие как:

и следуйте стандартам, указанным в этих рамках.

4 голосов
/ 21 октября 2010

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

Взгляните на Источник Коханы или любой другой из Ответ Билли ONeal .

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

Не смотрите на WordPress, вы приобретете некоторые ужасные привычки.

Кроме того, пока я думаю об этом, изучите OO иразница с процедурным кодом.

3 голосов
/ 22 октября 2010

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

В каком-то конкретном порядке, некоторые конкретные вещи, которые помогут вам на пути из моих лет программирования на PHP:

  • Включите уведомления, а затем убедитесь, что вы не пишете код, который их запускает. Стандартная установка PHP не не включает уведомления, что хорошо для производственной среды, но плохо для среды разработки. К сожалению, их файл по умолчанию php.ini, похоже, не знает, для чего он служит примером.

  • Точно так же убедитесь, что у вас отключены magic_quotes и register_globals. Они оба предназначены для более простого и наивного времени программирования и сегодня создают больше проблем, чем решают.

  • Инициализируйте переменные перед их использованием. Это также означает элементы массива. Если ваш код не уверен, существует ли переменная или элемент, используйте isset() и array_key_exists().

  • Выберите или разработайте разумный стиль кодирования и придерживайтесь его. Вам не нужно быть скромным с пробелами или переносами строк.

  • Проверьте переменные, которые вы ожидаете там быть. Это хитрый. Отличным примером этого является обработка HTTP POST, который может иметь много переменных элементов. Выясните, что должно быть в $_POST и поищите это. Не думайте, что то, что представлено, всегда будет тем, что должно быть представлено.

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

  • Отдельный доступ к базе данных, логика и представление (это часто называют программированием Model-View-Controller). Еще один способ выразить это - вам не нужно смешивать код, который обрабатывает последний POST-запрос с разметкой HTML, отправляемой с SQL-запросами. Большинство фреймворков будут применять это.

  • Если вы не используете инфраструктуру, которая предоставляет слой объектов, вы будете использовать собственный SQL. Либо используйте подготовленные операторы, либо используйте собственную функцию цитирования БД для строк, а не addslashes().

  • В PHP 4 было очень легко использовать много памяти, потому что структуры копировались, а не ссылались на них. PHP 5 в значительной степени решает эту конкретную проблему, но это все же может происходить со строками. Это также не учитывает склонность некоторых API к созданию больших структур.

3 голосов
/ 21 октября 2010

Почему все атакуют php?Многие отличные сайты работают на нем.По крайней мере, до тех пор, пока они не станут достаточно большими, чтобы заслуживать капитального ремонта.

99% Интернета - это просто выбрасывание сайтов, которые не получают большого трафика, по сравнению с сайтами, такими как Facebook или Amazon, так почему они должны заботиться оучить язык более изощренным, стабильным или строгим, если php выполняет работу экономически эффективным способом, который не менее стабилен или безопасен для того, что нужно?

Большинство сайтов, которые я создаю, работают на Kohana -ветка от кодигнитера.Оба полезны.Кому интересно, если CI использует php4.Что делать, если вас устроит веб-фирма, у которой есть архаичные сайты?Угадайте, что - вам нужно знать php4.Эта жалоба похожа на заявление о том, что вам больше не нужно знать HTML-файл tabled ... пока вам не придётся разрабатывать и кодировать шаблон рассылки для какой-то крупной компании.Тогда что?Ускоренный курс с поиском в Google?

Я говорю, что ПРАВИЛЬНЫЙ способ использования PHP - это следовать примерам.Да, WordPress имеет некоторые ужасные привычки, но он работает и является лишь одной из самых успешных платформ там.Что это говорит вам?

Я бы сказал, что вы могли бы многому научиться у таких фреймворков, как Kohana - и даже CI - поскольку у обоих есть приличные методы безопасности, которым нетрудно следовать.Такие вещи, как экранирование базы данных и фильтрация xss.Если вы не знакомы, и у вас будет приличная база пользователей, это поможет вам овладеть программированием, поэтому вы не застрянете без ответов.

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

2 голосов
/ 21 октября 2010

Чтобы предоставить что-то иное, чем «использовать фреймворк» или «посмотреть на фреймворк», вот несколько быстрых практических правил, специфичных для PHP, которые я обнаружил, которые имеют большое значение.

  1. Используйте PDO и абстрагируйте его в класс (или используйте существующий класс). Не используйте mysql_query или такие функции.
  2. Логика перед выводом. Не делайте таких вещей, как <?php if($x) { ?> HTML here <?php } ?> (использование синтаксиса HEREDOC чрезвычайно помогает в этом).
  3. Используйте магический метод __autoload, чтобы ограничить число включаемых

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...