Использование пространств имен внутри функции во включенном файлеPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Использование пространств имен внутри функции во включенном файле

Сообщение Anonymous »

В заголовке может быть не совсем понятно, что я пытаюсь сделать, но я хочу включить файл в свой основной файл, в этом включенном файле будут функции с классами пространства имен внутри функции. Примерно так:
main_file.php

Код: Выделить всё

require_once ($inc_path . "functions.inc.php");
require ("/path/to/composer/vendor/autoload.php");
use Netsuite\NetSuiteService;
use NetSuite\Classes\SearchStringField;

$result = ns_customer_exist("customer@email.com", $ns);
print_r ($result);
functions.inc.php:

Код: Выделить всё

function ns_customer_exist($email, $ns) {
$searchField = new SearchStringField();
$searchField->operator = "is";
$searchField->searchValue = $email;
$search = new CustomerSearchBasic();
$search->email = $searchField;
$request = new SearchRequest();
$request->searchRecord = $search;
$searchResponse = $ns->search($request);
if($searchResponse->searchResult->status->isSuccess) {
if ($searchResponse->searchResult->totalRecords > 0) {
return $searchResponse->searchResult->recordList->record[0]->internalId;
} else {
return false;
}
} else {
// Todo: return error
return false;
}
}
Когда я пытаюсь запустить это, я получаю сообщение об ошибке:

Код: Выделить всё

[22-Dec-2025 18:27:18 UTC] PHP Fatal error:  Uncaught Error: Class "SearchStringField" not found in /path/to/include/functions.inc.php:4
Stack trace:
#0 /path/to/main_file.php(41): ns_customer_exist()
#1 {main}
thrown in /path/to/include/functions.inc.php on line 4
В строке 4 указано «$searchField = new SearchStringField();»
Если я перенесу функцию в main_file.php, она будет работать нормально. Все, что я читаю, говорит мне, что наличие функции во включаемом файле должно работать, поскольку я вызываю использование пространства имен в основном файле, поэтому я не знаю, правильно ли я читаю документацию или я ее неправильно понимаю. Если понадобится, я перенесу функции в основной файл, но стараюсь этого избежать, поскольку в конечном итоге эти функции будут использоваться в нескольких сценариях. Я бы предпочел хранить их в одном месте, а не в куче скриптов. Буду признателен, если кто-нибудь скажет мне, что я делаю неправильно или что то, что я хочу сделать, невозможно.

Подробнее здесь: https://stackoverflow.com/questions/798 ... luded-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»