1. Не записывайте так строки. Сделайте так: $upload_path . '/' . $z
2. Что конкретно не работает? Выдает какую-то ошибку. Или срабатывает ваш die()?
3. Почему переменная $z определяется после ее использования?
Вот и комментарии:
1. Уже давно php 5 c областями видимости. Зачем свойства класса определять как public. Это будет вводить в заблуждение пользователей данного класса.
2. Никакой обработки ошибок. Вот взял я ваш класс, а он не работает. И как мне узнать, что не работает? Возьму я в try-catch блок вызов класса. А throw нигде не пробрасывается.
3. $this->coordinate и $this->coordinat. Может стоит назвать получше. Вообще, с названиями у вас плохо.
4. У вас много переменных внутри методов, которые не инициализированы в начале класса. Это неудобно.
5. В некоторых методах слишком много конструкций if. Проще заменить на switch.
6. Ну и, конечно же, велосипед)
Да, не выводится, если код, в котором может возникнуть ошибка, обернуть в try-catch блок. Порой есть очень важный функционал, который не должен остановить работы после какой-нибудь ошибки программиста. Мой же вариант запишет это все в лог или еще что-нибудь сделает.
LEONeso.
У нас есть метод test, в котором есть ошибка "Division by zero". Вместо вывода ошибки, определенной интерпретатором, вызовется метод _customErrorHandler().
die() - плохая прктика. Используйте Exception. Это очень удобно для логирования, просмотра трассировки ошибок. продолжение выполнения скрипта при ошибке.
В методе addProduct вы указали, что первый аргумент должен иметь тип ShopProduct. Вы же передаете массив. Но элементы этого массива имеют тип ShopProduct. Вам нужно по одиночке вызывать метод addProduct().