Кажется, нет стандартного способа сделать это, но это работает.
, ПОЧЕМУ однако, вопрос.
function functionize( obj , func )
{
out = func;
for( i in obj ){ out[i] = obj[i]; } ;
return out;
}
x = { a: 1, b: 2 };
x = functionize( x , function(){ return "hello world"; } );
x() ==> "hello world"
нет просто никакого другого способа достигнуть, это, делая
x={}
x()
возвратит "ошибку типа". потому что "x" является "объектом", и Вы не можете изменить его. его почти столь же разумный как пытающийся сделать
x = 1
x[50] = 5
print x[50]
это не будет работать. 1 целое число. целые числа не имеют методов массива. Вы не можете сделать его.
С файлом finfo_file: http://us2.php.net/manual/en/function.finfo-file.php
Я действительно рекомендую использовать фреймворк, например CodeIgniter, для отправки писем. Вот скринкаст о «Отправке писем с помощью CodeIgniter» всего за 18 минут.
http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-3/
Заголовок функции:
header('Content-Type: '.$the_content_type);
Обратите внимание, что эта функция должна вызываться перед любым выходом. Вы можете найти более подробную информацию в ссылке http://php.net/header
Edit:
Ops, я неправильно понял вопрос: Начиная с php 4.0 существует функция mime_content_type для определения mimetype файла.
В php 5 не рекомендуется, должна быть заменена набором функций информация о файле .
]Вот пример использования finfo_open , который доступен в PHP5 и PECL:
$mimepath='/usr/share/magic'; // may differ depending on your machine
// try /usr/share/file/magic if it doesn't work
$mime = finfo_open(FILEINFO_MIME,$mimepath);
if ($mime===FALSE) {
throw new Exception('Unable to open finfo');
}
$filetype = finfo_file($mime,$tmpFileName);
finfo_close($mime);
if ($filetype===FALSE) {
throw new Exception('Unable to recognise filetype');
}
В качестве альтернативы вы можете использовать устаревшую функцию mime_ content_ type :
$filetype=mime_content_type($tmpFileName);
или используйте встроенные функции ОС:
ob_start();
system('/usr/bin/file -i -b ' . realpath($tmpFileName));
$type = ob_get_clean();
$parts = explode(';', $type);
$filetype=trim($parts[0]);