我正在尝试从函数中的类调用静态函数。在伪代码中,像这样:
function process_image($file_name) {
$file_tmp_loc = $_FILES["uploaded_file"]["tmp_name"];
move_uploaded_file($file_tmp_loc, 'uploads/' . $file_name);
require("GifFrameExtractor.php");
$gif_file_path = 'uploads/' . $file_name;
if (GifFrameExtractor::isAnimatedGif($gif_file_path)) {
//do stuff here
}
}
我需要在实际函数中调用的类,但是我仍然遇到类找不到错误。此文件与尝试使用777权限的脚本位于同一目录中。我一直收到这个错误:
致命错误:第557行的..... / functions.php中找不到类'GifFrameExtractor'
如果代码有效,我可能会非常在乎OOP明智,所以我不会寻找任何讲座或问题,为什么我会做这样的事情,除非这就是为什么我做不到他们。我知道该文件正在被包含,因为我没有任何require()
或iostream错误。
对于那些想知道的人,我正在尝试从Github实现this类
答案 0 :(得分:1)
该类应与Composer
一起安装这意味着它通常是命名空间。为了能够使用该课程,您必须 import the namespace 。
如果您不使用composer,则必须确保自行安装程序包所需的所有依赖项。幸运的是这个类没有任何(除了PHP> = 5.3.0)
所以你可以包含它并导入命名空间。
做这样的事情:
<?php
include 'src/GifFrameExtractor/GifFrameExtractor.php';
use GifFrameExtractor\GifFrameExtractor AS GifFrameExtractor;
function doSomeStuff()
{
GifFrameExtractor::isAnimatedGif('test.gif');
}
doSomeStuff();
您也可以删除use语句并使用完全限定的命名空间:
<?php
include 'src/GifFrameExtractor/GifFrameExtractor.php';
function doSomeStuff()
{
GifFrameExtractor\GifFrameExtractor::isAnimatedGif('test.gif');
}
doSomeStuff();
通常,如果包使用composer,也可以通过composer安装它。否则,您可能会遇到一些不需要的和不必要的行为(如果包需要依赖性)