2012-05-25 3 views
4

Я работаю над новым проектом, который будет активно использовать различные вызовы AJAX для PHP. Правильно ли создавать один файл, содержащий все разные функции, и использовать оператор case для выбора правильного, или я должен создать папку php и поместить каждую функцию в свой собственный файл?Правильный стиль кодирования PHP

Я пытаюсь вернуть свои навыки в соответствие с современными стандартами и практиками веб-дизайна, и в прошлом один файл, чтобы управлять ими всеми, был способ пойти ради простоты; однако так много изменилось, что я хотел спросить, прежде чем я получил 10 000 строк в этом проекте.

Благодарим за любые советы, которые вы можете предоставить.

+2

Я думаю, что обычный стиль для PHP-программистов состоит в том, чтобы строить строки SQL, такие как '$ sql =" SELECT * FROM tblUsers WHERE Password = ". $ _GET ["Password"]; ' –

+0

@ ta.speot.is, что было бы невероятно плохим способом для построения вашего запроса. Я мог бы нанести всевозможные повреждения с помощью SQL-инъекции. Обычно вы используете PDO или, по крайней мере, вызываете mysql_real_escape_string для любых переменных, которые будут использоваться в запросах. – Endophage

+4

@ Эльдофаг сарказм чувак. – iambriansreed

ответ

1

Вместо того, чтобы думать о реализации проблемы, почему бы не подумать об интерфейсе? Это то, что я имею в виду, вы могли бы отделить реальную работу, выполняемую в классах, и позволить ajax совершать вызовы другим отдельным классам/функциям. Затем функции, вызванные через ajax, могут запросить различные классы/объекты для выполнения работы и отправить ответ обратно на ajax. Это может звучать как шаблон MVC. Преимуществом этого является четкое повторное использование кода, улучшенная развязка и упрощение обслуживания кода. Пример:

class Cook{ 

    function friedEgg(){/**/} 
    function currySoup(){/**/} 
    function sandwich(){/**/} 
} 

И функция вызывается через AJAX может быть

function ajaxBreakfast(){ 
    $cook = new Cook; 
    $result = $cook->friedEgg(); 
    $result .= $cook->sandwich(); 
    echo $result; 
} 

function ajaxLunch(){ 
    $cook = new Cook; 
    $result = $cook->currySoup(); 
    echo $result; 
} 

Надеется, что вы получите мою точку зрения!

+0

Мне нравится эта идея. Пока я вижу преимущества использования структуры, я не думаю, что это очень подходит для проекта, над которым я работаю. Этот подход кажется гораздо более простым методом получения результатов, которые я получаю после. Спасибо за ваш вклад. – FireCrakcer37

+0

добро пожаловать! – shawndreck

1

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

Я не уверен, почему вы использовали бы оператор switch для их выбора; иногда это полезно, но обычно вы просто не вызываете функции напрямую? Например, включите файл «library» и вызовите «getNewId()» всякий раз, когда пользователь регистрируется или что-то в этом роде.

+0

Скорее всего, вместо оператора switch я буду использовать if/elseif, но это больше для возможности легко вызвать функции с помощью ajax. т. е. включить файл функций и использовать условное выражение для выбора правильной функции из включенных через переменную, переданную с данными формы. Благодарю за ваш ответ. – FireCrakcer37

3

Этот вопрос будет лишен большого личного мнения.

Корпус и точка, мое мнение:

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

+0

Это хороший момент. Я думаю, что создам несколько файлов для разных частей веб-сайта. Спасибо за ваш ответ. – FireCrakcer37

1

ИМО это зависит.

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

Если у вас есть 2000 строк и несколько десятков аякс-звонков в минуту, то это не такая большая сделка.

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

2

Просто используйте современные рамки и стиль, который он наложит на вашу кодировку.
и используйте Opcode, который позволит вам писать более четкий код, не влияя на производительность.
Некоторые современные имена фреймов будут Zend, Yii, Codeigniter и т. Д.

+0

+1 и предпочтение CodeIgniter, если мне действительно нужно идти рядом с PHP. CI - хороший баланс функциональности. – Endophage

+0

проверить CI прямо сейчас. У меня нет опыта работы с фреймворками PHP, но до сих пор CI кажется, что он будет довольно прост в использовании. Спасибо за предложение. – FireCrakcer37