function chek_ext($f)
{
$vext=array("JPEG","jpeg","JPG","jpg","GIF","gif","PNG","png","DOC","doc","RAR","rar","ZIP","zip","TXT","txt","PDF","pdf");
foreach ($vext as $key => $value) {
$exts=checkext($f['name'],$value);
if ( checkext($f['name'],$value)==1){$this->ext=$value;}
}
return $this->ext;
}
Так вот когда заправляю ему файл file.jpg на выходе $this->ext получается png. Почему так происходит? Я понимаю, что можно в нете взять норм код, но как всегда хочется самому на велике покататься...
Спустя 6 минут, 48 секунд (14.12.2011 - 15:29) bulgakov написал(а):
То ли вы неполный код привели то ли я ничего не понимаю:
function chek_ext($f)
{
$vext=array("JPEG","jpeg","JPG","jpg","GIF","gif","PNG","png","DOC","doc","RAR","rar","ZIP","zip","TXT","txt","PDF","pdf");
foreach ($vext as $key => $value) {
$exts=checkext($f['name'],$value); // что это за функция checkext откуда она взялась?
if ( checkext($f['name'],$value)==1){$this->ext=$value;} // почему равно еденице? что тут делает $this? если это класс то где определение класса?
}
return $this->ext; // опять $this я не вижу тут ооп
}
Спустя 9 минут, 51 секунда (14.12.2011 - 15:38) silenblock написал(а):
function chek_ext($f)
{
$vext=array("JPEG","jpeg","JPG","jpg","GIF","gif","PNG","png","DOC","doc","RAR","rar","ZIP","zip","TXT","txt","PDF","pdf");
foreach ($vext as $key => $value) {
if ( checkext($f['name'],$value)){$this->ext=$value;} //можно и так
}
return $this->ext;
}
в класе определана переменная $this->ext которую и возвращает функция
$f - это передаваемый функции файл.
вопрос: почему функция checkext сравнивая расширение файла сначала верно находит, что он jpg, а потом соглашается и с тем, что он png?
Спустя 3 минуты, 48 секунд (14.12.2011 - 15:42) bulgakov написал(а):
Цитата |
вопрос: почему функция checkext сравнивая расширение файла сначала верно находит, что он jpg, а потом соглашается и с тем, что он png? |
Ответный вопрос, а где описание функции checkext? Я вижу только функцию chek_ext()? И я так и не понял, вы описали функцию или метод класса? так как это разные вещи, и $this->ext это НЕ ПЕРЕМЕННАЯ а СВОЙСТВО ЭКЗЕМПЛЯРА КЛАССА которого я в вашем коде не наблюдаю.
Спустя 10 минут, 41 секунда (14.12.2011 - 15:53) silenblock написал(а):
Цитата (bulgakov @ 14.12.2011 - 12:42) | ||
|
Это каким мне надо быть идиотом! ТОРМОЗ!!!! это самописная функция, которую я взял 100 лет назад и по своей торомзнутости, думал, что она встроенная!!!! ПОЗОР МНЕ. Только тему зря открыл!
СПАСИБО что раскрыли глаза. Ща разберусь с что к чему.
Спустя 4 минуты (14.12.2011 - 15:57) bulgakov написал(а):
silenblock
Да ладно) Бывает, я тоже с перепугу полез на php.net искать эту функцию, а уже после того как не нашел спросил Вас.
Да ладно) Бывает, я тоже с перепугу полез на php.net искать эту функцию, а уже после того как не нашел спросил Вас.
Спустя 6 минут, 50 секунд (14.12.2011 - 16:04) silenblock написал(а):
А вот по поводу $this->ext это НЕ ПЕРЕМЕННАЯ а СВОЙСТВО ЭКЗЕМПЛЯРА КЛАССА
если в начале класса я пишу private $ext; то это правильно называется СВОЙСТВО ЭКЗЕМПЛЯРА КЛАССА? Теорию я читаю сквозь пальцы, все больше стараюсь разбирать чужой код. И на примерах уже пробую решать свои задачи. Еще раз спасибо за быстрый ответ.
если в начале класса я пишу private $ext; то это правильно называется СВОЙСТВО ЭКЗЕМПЛЯРА КЛАССА? Теорию я читаю сквозь пальцы, все больше стараюсь разбирать чужой код. И на примерах уже пробую решать свои задачи. Еще раз спасибо за быстрый ответ.
Спустя 1 минута, 16 секунд (14.12.2011 - 16:05) ИНСИ написал(а):
Я бы сделал чуть по другому проверку:
function chek_ext($file) {
$arr = array('jpeg','jpg','png'); // типы файлов по одному разу в нижнем регистре :)
$ext = pathinfo($file, PATHINFO_EXTENSION);
$this->ext = (in_array($ext, $arr) ? $ext : '');
return $this->ext;
}
Спустя 7 минут, 31 секунда (14.12.2011 - 16:13) bulgakov написал(а):
silenblock
Почитайте. $this->ext, это доступ к свойству класса ext из методов класса. Вообщем почитаете.
Почитайте. $this->ext, это доступ к свойству класса ext из методов класса. Вообщем почитаете.
Спустя 7 минут, 46 секунд (14.12.2011 - 16:20) silenblock написал(а):
Переписал пока так:
нашел здесь. Работает. А теорию почитаю обязательно! Спасибо.
function chek_ext($f)
{
$vext=array("JPEG","jpeg","JPG","jpg","GIF","gif","PNG","png","DOC","doc","RAR","rar","ZIP","zip","TXT","txt","PDF","pdf");
foreach ($vext as $key => $value)
{
if (preg_replace('/^.*\.(.*)$/s', '$1', $f['name'])==$value){$this->ext=$value;}
}
return $this->ext;
}
нашел здесь. Работает. А теорию почитаю обязательно! Спасибо.