Неустранимая ошибка при загрузке класса EWSType_FindItemType (php-ews) - PullRequest
3 голосов
/ 11 августа 2011

Мне никогда не приходилось играть с классами, но я хочу использовать php-ews на странице, над которой я работаю.

мой основной файл вызывает 5 "корневых" php файлов через include

include ("php-ews/ExchangeWebServices.php");
include ("php-ews/EWS_Exception.php");
include ("php-ews/EWSType.php");
include ("php-ews/NTLMSoapClient.php");
include ("php-ews/NTLMStream.php");

однако они жалуются на то, что файлы в подпапках в этом случае не включены.

Fatal error: Class 'EWSType_FindItemType' not found in C:\wamp\www\intranet\dashboard\mailtest.php on line 19

Я попытался включить вышеуказанный файл в файл EWSType.php, и он жалуется, что следующий файл не включен Я пробовал методы для включения любого .php в папку, и это не работает.

Полагаю, я просто неправильно загружаю класс и задавался вопросом, может ли кто-нибудь показать мне путь!

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Вместо загрузки классов вручную, попробуйте __autoload их. Таким образом, вам не нужно беспокоиться о сохранении списка включений. Автозагрузчик сделает это за вас. Должно быть достаточно просто, если файлы классов вызываются так же, как и сами классы.

См. http://php.net/manual/en/function.spl-autoload-register.php и http://de3.php.net/manual/en/language.oop5.autoload.php для подробностей

function ews_autoloader($className) {
  if($className != 'EWS_Exception') {
    $classPath = str_replace('_','/',$className);
  }
  if(file_exists("php-ews/{$classPath}.php") {
    include("php-ews/{$classPath}.php");
  }
}

spl_autoload_register('ews_autoloader');
0 голосов
/ 11 августа 2011

удалось собрать немного кода для включения файлов основной папки.

$dir    = '/wamp/www/intranet/dashboard/php-ews/EWSType/';
$files1 = scandir($dir);
foreach ($files1 as $value) {
if(preg_match('/\.php$/i', $value)){
$inc = "php-ews/EWSType/";
$inc .= $value;
include ($inc);
}}
...