За последние 24 часа нас посетили 39748 программистов и 6876 роботов. Сейчас ищут 1363 программиста ...

Функция как данные

Тема в разделе "PHP для профи", создана пользователем Satger, 1 окт 2025.

  1. Satger

    Satger Активный пользователь

    С нами с:
    19 апр 2020
    Сообщения:
    79
    Симпатии:
    1
    Вот например, удобно делать данные для скрипта в виде файла json (на самом деле - неудобно, но неважно). Или файла .ini Или xml.
    Но там можно указать только скалярные типы.

    А что делать, если нужно указать пользовательскую функцию в составе данных?
     
  2. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    PHP:
    1. <?php
    2. function my_function()
    3. {
    4.     return 'Hello';
    5. }
    6.  
    7. $fname = 'my_function';
    8.  
    9. echo $fname();
    10. ?>
     
  3. Satger

    Satger Активный пользователь

    С нами с:
    19 апр 2020
    Сообщения:
    79
    Симпатии:
    1
    Ну в целом да, спасибо.
    Какие грабли на этом пути только непонятно...
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.840
    Симпатии:
    1.338
    Адрес:
    Лень
  5. Satger

    Satger Активный пользователь

    С нами с:
    19 апр 2020
    Сообщения:
    79
    Симпатии:
    1
    Эта затея - как раз в процессе пересмотра архитектуры. Сейчас функции передаются в виде текста и создаются eval. А это довольно длительный процесс.
     
  6. Алуксандр

    Алуксандр Новичок

    С нами с:
    22 апр 2026
    Сообщения:
    2
    Симпатии:
    0
    Добрый день! Может кто подскажет где находится картинка или ее нужно куда ставить?
    elemm.innerHTML = '<a title="<?php echo $r['Title']; ?>" <?php if(!empty($r['Refer'])) echo 'rel="noreferrer"'; ?> target="_blank" href="<?php echo PROT."{$_SERVER['SERVER_NAME']}/" ?>adver/context?click=<?php echo $r['Id']; ?>&type=1&host='+document.location.host+'&partner=<?php echo $p['Id']; ?>&key=<?php echo $key; ?>"><img src="<?php echo PROT."{$_SERVER['SERVER_NAME']}/" ?><?php echo $r['image']; ?>" style="max-width: 468px;width: 100%;min-height: 60px;" alt="<?php echo $r['Title']; ?>" /></a>';
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    @Алуксандр ты фронтендер, да?
    задачка со звёздочкой. для начала попробуй код оформить в ббкод [code] и отформатировать чтобы читалось легче.
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    Очевидно, по адресу, который лучше выводить хотя бы так:
    HTML:
    1. <?= PROT, $_SERVER['SERVER_NAME'], '/', $r['image'] ?>
    --- Добавлено ---
    P.S. Новую тему создать религия не позволила?
     
  9. Алуксандр

    Алуксандр Новичок

    С нами с:
    22 апр 2026
    Сообщения:
    2
    Симпатии:
    0
    Добрый день
    Есть такой код с авторизацией через вк
    Код (PHP):
    1. public function ApiUrlToken(){
    2.                 $url = 'https://oauth.vk.com/access_token?'.http_build_query(array(
    3.                     'response_type' => "code",
    4.                     'client_id'     => $this->set['client_id'],
    5.                     'redirect_uri'  => PROT.$_SERVER['SERVER_NAME'].'/earn/vk',
    6.                     'display'       => 'page',
    7.                     'v'       => $this->set['api_vers'],
    8.                     'scope'         => 'groups', //array('offline','groups','friends','photos')
    9.                 ));
    10.                 return $url;
    11.             }
    12.             public function ApiGetToken($code){
    13.                 $url = 'https://oauth.vk.com/access_token?'.http_build_query(array(
    14.                     'code'          => $code,
    15.                     'client_id'     => $this->set['client_id'],
    16.                     'redirect_uri'  => PROT.$_SERVER['SERVER_NAME'].'/earn/vk',
    17.                     'client_secret' => $this->set['secret_key'],
    18.                     'v'       => $this->set['api_vers'],
    19.                     'scope'   => 'groups',
    20.                 ));
    21.                 $json = file_get_contents($url);
    22.                 //var_dump($json);die();
    23.                 $json = json_decode($json,1);
    24.                 if(isset($json['response']))
    25.                     return $json['response'];
    26.                 return $json;
    27.             }
    выдает ошибку
    {"error":"invalid_client","error_description":"client_secret is undefined"}

    в настройках модуля id приложения и ключи правильно вставлены

     
    #9 Алуксандр, 27 апр 2026
    Последнее редактирование модератором: 27 апр 2026
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    Проверь. Я даже увидел
    Код (PHP):
    1. //var_dump($json);die();
    ты типа умеешь отлаживать код! сделай чтобы оно вывело $url и убедись. Я думаю VK тебе не врёт.

    Я даже не заикаюсь про настройку xdebug.
    --- Добавлено ---
    чтобы твой код на форуме не выглядел как говно, есть кнопка </>
    один раз я это сделал за тебя.