Это означает, что вы либо используете одно и то же имя функции / класса дважды, и вам нужно переименовать один из них, или это потому, что вы использовали require
или include
, где вы должны использовать require_once
или include_once
.
Когда класс или функция объявляется в PHP, он неизменен и не может быть позже объявлен с новым значением.
Рассмотрим следующий код:
class.php
<?php
class MyClass
{
public function doSomething()
{
// do stuff here
}
}
index.php
<?php
function do_stuff()
{
require 'class.php';
$obj = new MyClass;
$obj->doSomething();
}
do_stuff();
do_stuff();
Второй вызов do_stuff()
приведет к получению ошибка выше. Изменяя require
на require_once
, мы можем быть уверены, что файл, содержащий определение MyClass
, будет загружен только один раз, и ошибка будет устранена.
Я обычно создаю папку lib в своем проекте, куда я поместил dll's, на который ссылаются. Тогда я указываю на ссылку на dll в папке lib. Таким образом, каждый разработчик может разработать проект после получения от управления исходным кодом.
, Если это - проект, который был разработан в доме, Вы могли также добавить что проект к своему решению.
Если блок не находится в GAC, создайте каталог, названный зависимостями, и добавьте все блоки там. Папка и блоки добавляются к управлению исходным кодом. Правило - это, учитывая любой проект в управлении исходным кодом, все, что требуется, чтобы создавать, должен сделать контроль и разработать проект (или выполнить некоторый инструмент, который также проверяется в проект).
, Если Вы добавляете папку к решению и добавляете блоки к папке решения, это также предоставляет визуальный индикатор devs, который указывает на то, какие внешние зависимости присутствуют..., все зависимости находятся в том каталоге. Относительные пути гарантируют, что Visual Studio может определить местоположение ссылок без проблемы.
Для больших решений, с 20 + проекты, это делает жизнь намного легче!
Лучшая практика, которую я ожидал бы, будет иметь Ваш репозиторий SC, включают и осуществляют относительные местоположения ссылочных объектов для Вас (обычно через общий путь), таким образом, Вы не занимаетесь этой проблемой непосредственно. Исходный разработчик должен зарегистрироваться в этой информации.
Если Вы регистрируетесь в фактическом DLLs в управление исходным кодом, то можно сослаться на них относительным путем, и все разработчики автоматически получат любые зависимости, когда они затем обновят проект.
Добавление ссылки DLL полным путем было бы ошибкой разработчика так же, как добавлением, что исходный файл полным путем будет ошибкой.
Эмпирическое правило : Если проект не является частью решения, ссылка выпустила dlls от управляемого/binshare источника или / каталога lib, который находится под деревом управления исходным кодом Вашего решения. Все внешние зависимости должны были присвоить версию DLLs, которые входят в этот/binshare каталог.
я понимаю то, что Ваш коллега делает в отношении удобства. Однако подход того разработчика диаметрально настроен против надлежащей конфигурации/управления сборками.
Пример: Если Вы используете Блок Применения данных MS в качестве зависимости в Вашем приложении, необходимо сослаться на правильно выпущенный двоичный файл, вместо того, чтобы стать последними от dev исходной соединительной линии MS.