2012-01-26 4 views
1

Я действительно неопытен, когда речь идет о PHP, и надеясь, что кто-то может что-то прояснить, когда дело доходит до того, как переменные обрабатываются на PHP.Идентичные имена переменных PHP

У меня есть веб-приложение PHP, которое я создал и которому нужно было сделать быстрый дубликат, поэтому я просто копировал и вставлял это приложение в новую папку на том же сервере.

Мне интересно, есть ли проблемы, если приложения в двух разных папках имеют одинаковые имена переменных?

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

+0

Эти переменные встречаются в любой точке, например, например, включают или требуют, другие? – Joseph

+0

Я не передаю переменные между двумя папками. По существу, произошло то, что пользователь вводит одни и те же данные, но внешний интерфейс для каждого приложения отличается. Система, к которой он подключается, на сервере также отличается. Для всех целей они представляют собой отдельные приложения только с тем же кодом. Я планирую перезаписать, чтобы сделать это более упорядоченным и более простым в обслуживании. Двигаясь вперед, я хотел бы сделать что-то вроде: Значения 1 -> App1 -> Unified Engine -> Система Backend 1 Значения 1 -> App2 -> Единая система -> Backend System 2 Унифицированной двигателя существа способный отслеживать и отделять запросы – user1170528

+0

Ни в коем случае это не столкнется, не столкнется или не сбой в вашей системе, если ваши инструкции не будут такими. – B4NZ41

ответ

3

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

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

Теперь, если вы будете использовать $_SESSION и оба приложения используют одинаковое значение для session_name() и работать на том же доменное имя, есть возможность, что значения сохраняющиеся в $_SESSION могут сталкиваться между вашими экземплярами приложения. Это просто решается путем изменения значения для одного из приложений из умолчанию PHPSESSID:

// Application 1 
session_name("APP1"); 
session_start(); 

// Application 2 
session_name("APP2"); 
session_start(); 

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

+0

Спасибо, Майкл! Это именно то, что я хотел подтвердить или не подтвердить! Я планирую переписать просто не успел/не успел! – user1170528

0

В моем случае вы можете или не можете использовать имена переменных indenticle в разных папках. это зависит от функциональности вашего приложения. вам нужно сделать небольшое исследование по google 'scop глобальных и локальных переменных в php'.

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

Смежные вопросы