finfo课怎么关闭?

时间:2015-08-19 17:17:19

标签: php oop

使用面向对象的界面时,finfo是如何关闭的?参考http://php.net/manual/en/class.finfo.php

是否有必要这样做?

$finfo = finfo_open(FILEINFO_MIME_TYPE);
// ... 
finfo_close($finfo);    //This works


$zip = new ZipArchive();
// ... 
$zip->close();  //This works

$finfo = new finfo(FILEINFO_MIME_TYPE);
// ...
$finfo->close();    //Error: Call to undefined method finfo::close()

finfo_close($finfo); //Error finfo_close() expects parameter 1 to be resource, object given

2 个答案:

答案 0 :(得分:1)

查看the tests for fileinfo_close,PHP人员似乎只是使用unset来模仿OOP版本中的行为。我无法在代码中找到任何暗示它自动完成的内容。

--TEST--
Test finfo_close() function : basic functionality 
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
/* Prototype  : resource finfo_close(resource finfo)
 * Description: Close fileinfo resource. 
 * Source code: ext/fileinfo/fileinfo.c
 * Alias to functions: 
 */
echo "*** Testing finfo_close() : basic functionality ***\n";
$magicFile = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'magic';
$finfo = finfo_open( FILEINFO_MIME, $magicFile );
var_dump( $finfo );
// Calling finfo_close() with all possible arguments
var_dump( finfo_close($finfo) );
$finfo = new finfo( FILEINFO_MIME, $magicFile );
var_dump( $finfo );
unset( $finfo );
?>
===DONE===
--EXPECTF--
*** Testing finfo_close() : basic functionality ***
resource(%d) of type (file_info)
bool(true)
object(finfo)#%d (%d) {
}
===DONE===

答案 1 :(得分:0)

我认为你不需要。对于finfo_open,您有一个OOP样式 - 对于finfo_close,您没有。 finfo_close只接受一个资源,而不是一个对象。

也许这是由PHP的垃圾收集器自动完成的。但是你不需要这样做 - 它没有任何功能,它可以做到。