Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Мы были в аналогичной ситуации, и вот то, что мы закончили тем, что делали:
можно также настроить отдельные серверы разработки для каждого из членов команды на их рабочих станциях. Я нахожу, что это ускоряет вещи немного, хотя у Вас действительно есть еще некоторое время установки.
Мы должны были использовать единственный сервер разработки, потому что мы использовали собственный CMS и столкнулись с лицензированием проблем. Таким образом, наш рычаг постфиксации был простым ботом FTP.
Вот то, что мы делаем:
В начале проекта, пользователь делает ответвление и проверяет его на их персональном VM, а также захватывает чистую копию базы данных. Они делают свою работу, фиксируя, когда они идут.
, После того как они закончили все в своем собственном личном пространстве, что они входят в сервер интеграции и проверяют их ответвление, запускают их тесты, и т.д. Когда все, что передает их ответвление, объединяется в Соединительную линию.
Соединительная линия восстановлена, полный комплект тестов выполняются, и если все хорошо, это получает большой старый штамп одобрения, отмеченного на SVN и способствовавшего Производству в конце ночи.
, Если в какой-либо точке фиксация кем-то еще сделана, мы получаем электронное письмо и можем объединить те изменения в наши отдельные ответвления.
Каждый из Вас мог выполнить его локально, или самостоятельно dev сервер (или даже тот же с различным портом...).
Бобовый стебель имеет встроенные рычаги постфиксации для развертывания на разработке, подготовке и рабочих серверах.
Одним способом использовать подверсию для разработки PHP является также установка репозиторий для одного или всех трех разработчиков, и используйте этот репозиторий, больше как инструмент синхронизации, чем истинное управление версиями.
Вы могли,
Заставляют repo
Добавить Вашу всю структуру документа PHP Вашего проекта
Контроль копия этого repo в корректное пятно на Вашем dev сервере
Использование рычаг svn, который активируется на фиксации
Этот рычаг, автоматически обновит содержание dev, разъединяют, каждый раз, когда кто-либо в команде регистрируется в любом коде.
Hook находится в:
svn_dir/repo_name/hooks/post-commit
И мог быть похожим:
/usr/bin/svn/path_to/webroot - имя пользователя svn_user - пароль svn_pass
, Который обновит Вашу рабочую копию на dev сервере к последней регистрации.
Один возможный путь (существуют, вероятно, лучшие пути):
у Каждого из Вас должна быть Ваша собственная проверенная версия проекта.
Имеют локальную копию сервера на Вашем компьютере и тестируют его там в течение дня. Затем в конце каждого дня (или каждый раз, когда), Вы объединяетесь вместе независимо от того, что Вы готовы протестировать, и Вы проверяете его на dev сервер и тестируете его.
Другой инструмент, который можно использовать для сборок, TeamCity, который свободен для 20 конфигураций сборки (достаточно для самых небольших компаний/проектов.) Этот путь можно запустить тесты, а также запланировать сборки.
Как насчет чего-то распределенного? Вы можете начать, например, с Mercurial, попробовать различные рабочие процессы и посмотреть, какой из них подходит вам лучше всего.