Использование расширения PHP Gender в cakephp - PullRequest
0 голосов
/ 05 декабря 2018

На моем локальном хосте есть расширение php для определения пола.http://php.net/manual/en/gender.example.admin.php

Следуя инструкциям в проекте, не связанном с CakePHP, все, что мне нужно сделать, это:

namespace Gender;
$gender = new Gender;
$name = "Milene";
$country = Gender::FRANCE;

$result = $gender->get($name, $country);
$data = $gender->country($country);

И это дает правильные результаты.Однако, если я помещаю приведенный выше код в функцию в cakephp, я получаю сообщение об ошибке:

syntax error, unexpected 'Gender' (T_STRING), expecting \\ (T_NS_SEPARATOR)

Я думаю, что это связано с использованием пространств имен, но я не совсем уверен, как это все работает (были ибудем продолжать гуглить).Может кто-нибудь пролить свет на то, как я могу использовать это расширение Gender в CakePHP?

EDIT Вот журналы ошибок:

Stack Trace:
#0 [internal function]: OwnerAccountsController->dashboard()
#1 /var/www/html/rrv3/lib/Cake/Controller/Controller.php(491): ReflectionMethod->invokeArgs(Object(OwnerAccountsController), Array)
#2 /var/www/html/rrv3/lib/Cake/Routing/Dispatcher.php(193): Controller->invokeAction(Object(CakeRequest))
#3 /var/www/html/rrv3/lib/Cake/Routing/Dispatcher.php(167): Dispatcher->_invoke(Object(OwnerAccountsController), Object(CakeRequest))
#4 /var/www/html/rrv3/app/webroot/index.php(110): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#5 {main}

И это - это точный код, который я использую в своей панели инструментов:

$gender = new \Gender\Gender();
$name = "Milene";
$country = \Gender\Gender::FRANCE;
$result = $gender->get($name, $country);
$data = $gender->country($country);

switch($result) {
    case Gender::IS_FEMALE:
        printf("The name %s is female in %s\n", $name, $data['country']);
    break;
    case Gender::IS_MOSTLY_FEMALE:
        printf("The name %s is mostly female in %s\n", $name, $data['country']);
    break;
    case Gender::IS_MALE:
        printf("The name %s is male in %s\n", $name, $data['country']);
    break;
    case Gender::IS_MOSTLY_MALE:
        printf("The name %s is mostly male in %s\n", $name, $data['country']);
    break;
    case Gender::IS_UNISEX_NAME:
        printf("The name %s is unisex in %s\n", $name, $data['country']);
    break;
    case Gender::IS_A_COUPLE:
        printf("The name %s is both male and female in %s\n", $name, $data['country']);
    break;
    case Gender::NAME_NOT_FOUND:
        printf("The name %s was not found for %s\n", $name, $data['country']);
    break;
    case Gender::ERROR_IN_NAME:
        echo "There is an error in the given name!\n";
    break;
    default:
        echo "An error occurred!\n";
    break;
}

1 Ответ

0 голосов
/ 05 декабря 2018

Без вашего кода CakePHP я могу только догадываться, но да, скорее всего, пространство имен создает проблему.Код CakePHP имеет собственное пространство имен, и вы не можете вкладывать пространства имен.Попробуйте этот код вместо:

$gender = new \Gender\Gender();
$name = "Milene";
$country = \Gender\Gender::FRANCE;

$result = $gender->get($name, $country);
$data = $gender->country($country);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...