Как я могу вызвать функцию в классе php?

Это пример кода:

образец кода

Я хочу назвать это на другой странице:

include 'root of class file';
$r = new ImagineResizer();

Я получил эту ошибку:

Fatal error: Class 'ImagineResizer' not found in C:\WampDeveloper\Websites\example.com\webroot\images.php on line 13

Также вызовите функцию:

$r->resize('c:/test1.jpg', 'c:/test2.jpg');

-1

Решение

Как видно из вашего примера кода, класс находится в другом пространстве имен:

<?php

namespace Acme\MyBundle\Service;
use Symfony\Component\HttpFoundation\File\File;
use Imagine\Image\ImagineInterface;
use Imagine\Image\BoxInterface;
use Imagine\Image\Point;
use Imagine\Image\Box;

class ImagineResizer {
//-- rest of code
}

Чтобы использовать класс в другом пространстве имен, вам нужно указать, где находится файл:
Сначала включите класс (ручной или с автозагрузкой)

Тогда вы можете создать экземпляр двумя способами. Первый способ с use-ключевое слово

use Acme\MyBundle\Service\ImageResizer;
$object = new ImageResizer();

Или укажите абсолютный класс:

$object = new \Acme\MyBundle\Service\ImageResizer();
2

Другие решения

Надеюсь, это поможет вам:

  1. Убедитесь, что вы включили фактический файл, а не только папку, в которой он находится.
  2. Убедитесь, что файл, из которого вы вызываете класс, использует то же пространство имен, что и ваш файл класса. Если это не так, вы должны вызвать класс, используя полное пространство имен.
  3. Прибыль.

Пространства имен действительно заставили меня набраться терпения, когда я начал их использовать, но как только вы к этому привыкли, это не так уж сложно. Я бы порекомендовал использовать автозагрузчик. Это немного хлопотно для настройки, но как только это сделано, это помогает кучу.

1

По вопросам рекламы [email protected]