Привет всем. Помогите решить проблему. Перенес сайт на другой хост. Появляется такая ошибка: Strict Standards: Static function DbFactory::createConnection() should not be abstract in /home/lookings/public_html/application/core/db.php on line 20 листинг db.php Код (Text): <?php //Класс DB - класс подключения к БД abstract class DB { //параметры соединения private $conn = array(); //open - открытие соединения abstract function open(); //close - закрытие соединения abstract function close(); } //Абстрактная фабрика abstract class DbFactory { //метод для создания объекта соединения с БД abstract public static function createConnection($conn); } //класс создатель MongoConnection class MongoDbFactory extends DbFactory { public static function createConnection($conn) { return new MongoConnection($conn); } } //класс создатель MysqlConnection class MysqlDbFactory extends DbFactory { public static function createConnection($conn) { return new MysqlConnection($conn); } }
Re: Static function DbFactory::createConnection() should not на новом хостинге версия пхп новее чем на старом. обновить код под новые стандарты.
Re: Static function DbFactory::createConnection() should not abstract public static function createConnection($conn); Strict Standards: Static function DbFactory::createConnection() should not be abstract in...
Re: Static function DbFactory::createConnection() should not http://stackoverflow.com/questions/999066/why-does-php-5-2- ... ss-methods
Re: Static function DbFactory::createConnection() should not Переделал вот так: Код (Text): <?php //Класс DB - класс подключения к БД abstract class DB { //параметры соединения private $conn = array(); //open - открытие соединения abstract function open(); //close - закрытие соединения abstract function close(); } interface I { public static function createConnection($conn); } //Абстрактная фабрика abstract class DbFactory implements I { //метод для создания объекта соединения с БД public function createConnection($conn); } //класс создатель MongoConnection class MongoDbFactory extends DbFactory { public static function createConnection($conn) { return new MongoConnection($conn); } } //класс создатель MysqlConnection class MysqlDbFactory extends DbFactory { public static function createConnection($conn) { return new MysqlConnection($conn); } } Выдает теперь ошибку Fatal error: Non-abstract method DbFactory::createConnection() must contain body in /home/lookings/public_html/application/core/db.php on line 26
Guliver, мда... даже разными цветами показал, специально, думал допрет =) Ну кароче убери статик, а абстракт оставь. Кто-то похоже плохо читал мануал. Прочитай, про структуру интерфейсов.
Re: Static function DbFactory::createConnection() should not Если бы так все просто. Это первое что я попытался сделать. Там потом ошибка за ошибкой Fatal error: Cannot make non static method DbFactory::createConnection() static in class MongoDbFactory in /home/lookings/public_html/application/core/db.php on line 29
Re: Static function DbFactory::createConnection() should not Ну что, поделать, сочувствую о юный подаван =) Но этот скрипт подлежит серьезным правкам.
Re: Static function DbFactory::createConnection() should not Спасибо всем. Проблема решена. Почитал мануал и все готово. Приблизительно все выглядит вот так Код (Text): <?php interface I { static public function f(); } abstract class C implements I { // more/other methods go here } class D extends C { static public function f() { echo 'I am f().'; } } ?>
Re: Static function DbFactory::createConnection() should not У интерфейса могут быть только публичные действия, не защищенных не приватных, быть не может, собственно public в определении лишний. За место такого велоси-беда =), лучше бы занялся ООП =) Какой - то геморой сам себе создаешь =) А методы можно переопределять и без интерфейса и абстракции =)))