Phalanger не может найти мои php классы

После этого вопроса я нашел хороший (актуальный) пример для подражания здесь. Я успешно получил библиотеки PHP.Core, работающие в VS, но все еще не могу найти мои классы php.

Учебник достаточно прост, однако

dynamic phpObj = globals.@class.PhpClass();

никогда не находит мой класс php. Я попытался с файлом примера default.php (имя класса: PhpClass) и с моими собственными классами php, которые похожи, но имеют другое имя.

Что мне здесь не хватает? Я попробовал вариант

Свойства проекта> Упаковать / опубликовать в Интернете> Элементы для развертывания> все файлы в проекте

но это не помогло. В настоящее время у меня есть php классы прямо под проектом, как показано ниже

Ошибка, которую я получаю, просто говорит, что не может найти класс:

Использование ILSpy здесь является основным фрагментом кода для CurrentContext

result = (((ScriptContext)CallContext.GetData("PhpNet:ScriptContext")) ?? ScriptContext.CreateDefaultScriptContext());

Эта строка кода используется для поиска классов php (AFAIK).

1 ответ

Решение

Вы должны сначала включить ваши php-файлы в контекст PHP... В Web App, чтобы правильно "симулировать" жизненный цикл php, сделайте следующее:

using (var request_context = RequestContext.Initialize(ApplicationContext.Default, HttpContext.Current))
{
    var context = request_context.ScriptContext;
    context.Include("default.php", false);
// now the declarations declared by default.php are available in context.
// do anything with PHP objects here
}
Другие вопросы по тегам