<MyRusakov.ru />

Финансовая грамотность от А до Я

Финансовая грамотность от А до Я

Данный курс в кратчайшие сроки обучит Вас финансовой грамотности. Эти знания позволят Вам получить, как минимум, серьёзную финансовую стабильность, а, как максимум, финансовую независимость.

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

Помимо самого курса Вас ждёт ещё бесплатный ценный Бонус: «Ранний выход на пенсию». В рамках этого Бонуса Вы узнаете, какой должен быть капитал конкретно в Вашем случае, варианты его получения, а также какие есть стратегии вывода капитала на пенсии и где их можно протестировать.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Последнее задание в ООП в PHP
15.02.2013 00:23:44 Последнее задание в ООП в PHP Сообщение #1
AlexeyK

AlexeyK

Новичок

Новичок

Дата регистрации:
15.02.2013 00:10:50

Сообщений: 4

Привет Михаил.
Вот пытаюсь освоить PHP на базе вашего курса от нуля до гуру.
Застрял на последнем задании в заделе ООП. там где нужно заменить объекты на статик.
Вот что у меня получилось:
Это index.phprequire_once "lib\uploadimage_class.php";
require_once "lib\uploadtext_class.php";
if($_POST["upload"]) {
$success_text = UploadText::uploadFile($_FILES["text"]);
$success_image = UploadImage::uploadFile($_FILES["image"]);
}

Upload text require_once "upload_class.php";
class UploadText extends Upload {
protected static $dir = "text";
protected static $mime_types = array("text/plain";
}

Upload Image:require_once "upload_class.php";
class UploadImage extends Upload {
protected static $dir = "image";
protected static $mime_types = array("image/png", "image/jpeg", "image/gif";
}

А это сам класс аплоад:
abstract class Upload {

protected static $dir;
protected static $mime_types;

public static function uploadFile($file) {
if(!self::isSecurity($file))
return false;
$uploadfile = self::$dir."/".$file["name"];
return move_uploaded_file($file["tmp_name"], $uploadfile);
}

protected static function isSecurity($file){
$blacklist = array(".php", ".html", ".php3", ".php4", ".phtml", ".htm";
foreach ($blacklist as $item) {
if(preg_match("/$item\$/i", $file["name"])) return false;
}
$type = $file["type"];
for ($i=0; $i < count(self::$mime_types); $i++) {
if($type == self::$mime_types[$i]) break;
if($i+1 == count(self::$mime_types)) return false;
}
$size = $file["size"];
if($size > 2048000) return false;
return true;
}
}

Код ошибок не выдаёт, но при этом ничего не работает. Есть подозрение, что проблемма с $uploadfile(я в коде отметил красным), так как вызов его через echo выдаёт только имя файла без папки. Но тогда файлы должны загружаться в корень, но и там этого не происходит. Подскажите где ошибка?
Профиль
15.02.2013 16:18:38 Последнее задание в ООП в PHP Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

А self::$mime_types работает?
Профиль
15.02.2013 16:26:26 Последнее задание в ООП в PHP Сообщение #3
AlexeyK

AlexeyK

Новичок

Новичок

Дата регистрации:
15.02.2013 00:10:50

Сообщений: 4

нет. в ответ на echo print_r(self::$mime_types); он печатает 1... без ошибок, просто 1, причем ответ не меняется даже если я укажу так echo print_r(self::$mime_types[1]);
Профиль
15.02.2013 21:06:56 Последнее задание в ООП в PHP Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Убедитесь, что версия PHP не ниже 5.3.0
Профиль
15.02.2013 22:21:22 Последнее задание в ООП в PHP Сообщение #5
AlexeyK

AlexeyK

Новичок

Новичок

Дата регистрации:
15.02.2013 00:10:50

Сообщений: 4

Версия PHP 5.3.4 это правда не Denwer, а Wamp, но не думаю что проблемма в этом.

Кстати кое что еще интересное... если я повторяю урок(тоесть делаю всё на основе объектов) то вот на такой запрос в файле upload_class.php:echo '$mime_types ='.print_r($this->mime_types)."<br />";
echo '$dir = '.$this->dir."<br />";

получаю вот такой ответ:
Array ( [0] => text/plain ) $mime_types =1
$dir = text
Array ( [0] => image/png [1] => image/jpeg [2] => image/gif ) $mime_types =1
$dir = image
откуда появились единички в конце???
100 раз перепроверял код такой же как и в курсе, и всё работает на "ура"....
Профиль
16.02.2013 01:24:41 Последнее задание в ООП в PHP Сообщение #6
AlexeyK

AlexeyK

Новичок

Новичок

Дата регистрации:
15.02.2013 00:10:50

Сообщений: 4

Решение вопроса найдено. Если кому интересно есть два пути:
или в функциях update_class.php добавить:$uploadClass = get_called_class();
$dir = $uploadClass::$dir
и $uploadClass = get_called_class();
$mime_types = $uploadClass::$mime_types;

это длинный путь описание его http://il.php.net/get_called_class
Ну или более короткий путь это вмести self:: указывать static:: описание http://il.php.net/manual/en/language.oop5.late-static-bindings.php
Профиль