如何在php

时间:2015-05-16 09:12:35

标签: php oop namespaces

我有一个带有命名空间的类,它还需要许多其他类。主要课程是

<?php
/**
 * Deals with PDF document level aspects.
 */
namespace Aspose\Cloud\Pdf;

use Aspose\Cloud\Common\AsposeApp;
use Aspose\Cloud\Common\Product;
use Aspose\Cloud\Common\Utils;
use Aspose\Cloud\Event\SplitPageEvent;
use Aspose\Cloud\Exception\AsposeCloudException as Exception;
use Aspose\Cloud\Storage\Folder;

class Document
{

    public $fileName = '';

    public function __construct($fileName='')
    {
        $this->fileName = $fileName;
    }

    /**
     * Gets the page count of the specified PDF document.
     *
     * @return integer
     */
     public function getFormFields()
    {
        //build URI
        $strURI = Product::$baseProductUri . '/pdf/' . $this->getFileName() . '/fields';

        //sign URI
        $signedURI = Utils::sign($strURI);

        //get response stream
        $responseStream = Utils::ProcessCommand($signedURI, 'GET', '');

        $json = json_decode($responseStream);

        return $json->Fields->List;
    }
}

我在index.php

中使用这个
<?
ini_set('display_errors', '1');
use Aspose\Cloud\Pdf;

$document=new Document;
echo $document->GetFormFields();

//or like this 
echo Document::GetFormFields();

//also tried this 
echo pdf::GetFormFields();

?>

错误

Fatal error: Class 'Document' not found in /var/www/pdfparser/asposetry/index.php on line 5

文档类路径为 Aspose / Cloud / Pdf / Document.php

尝试一次

如果我使用包含在index.php include(Aspose/Cloud/Pdf/Document.php)中,但后来进一步的命名空间产生错误。使用use很难更改每个include命名空间。 anybudy可以告诉我这个解决方案吗?

感谢。

2 个答案:

答案 0 :(得分:2)

namespace Aspose\Cloud\Pdf;

class Document {
    ...

use这门课,你必须写

use Aspose\Cloud\Pdf\Document

您也可以在没有use声明的情况下访问它,但每次都必须写全名:

$document=new Aspose\Cloud\Pdf\Document;

// Or if you're in a namespace, you'll have to do this:

$document=new \Aspose\Cloud\Pdf\Document;

答案 1 :(得分:1)

您正在尝试使用Document命名空间内的Aspose\Cloud\Pdf类,但实际上您正在使用没有命名空间的Document类。您必须使用以下方法之一:

//Option one:
use Aspose\Cloud\Pdf\Document;
Document::getFormFields();

//Option two:
Aspose\Cloud\Pdf\Document::getFormFields();

另请注意,您不能将Document::getFormFields()用作静态函数,因为它不是静态的。您应该将其设置为静态(将static放在publicfunction之间)或在对象上使用它。