Php在函数中调用静态函数

时间:2014-03-31 07:09:46

标签: php oop

我正在尝试从函数中的类调用静态函数。在伪代码中,像这样:

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

1 个答案:

答案 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安装它。否则,您可能会遇到一些不需要的和不必要的行为(如果包需要依赖性)