Параметры функции PHP - проблема с var не установлена - PullRequest
0 голосов
/ 22 марта 2010

Так что я, очевидно, не очень хороший программист. Я написал эту маленькую функцию:

function dispAdjuggler($atts) {
extract(shortcode_atts(array(
    'slot' => ''
), $atts)); 

$adspot = '';
$adtype = '';

// Get blog # we're on
global $blog_id;
switch ($blog_id) {
    case 1:
        // root blog HOME page
        if (is_home()) {
            switch ($slot) {
                case 'top_leaderboard':
                    $adspot = '855525';
                    $adtype = '608934';
                break;
                case 'right_halfpage':
                    $adspot = '855216';
                    $adtype = '855220';
                break;
                case 'right_med-rectangle':
                    $adspot = '858222';
                    $adtype = '613526';
                break;
                default:
                    throw new Exception("Ad slot is not defined");
                break;
            }

Когда я ссылаюсь на функцию на странице примерно так:

<?php dispAdjuggler("top_leaderboard"); ?>

Переключатель выдает исключение по умолчанию. Что я тут не так делаю?

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 22 марта 2010

Не зная, что делает функция shortcode_atts (), похоже, что вы передаете массив, чтобы установить значения по умолчанию ('slot' = пустая строка), после чего extract () преобразуется в $short = ''

extract(shortcode_atts(array(
    'slot' => ''
), $atts)); 

право? Теперь, когда $ slot - пустая строка, она не будет соответствовать ни одному из случаев в вашем переключателе, и, следовательно, запускается регистр по умолчанию, который выдает исключение «Рекламный слот не определен».

0 голосов
/ 22 марта 2010

Вы не пропустили параметр типа извлечения?

http://us.php.net/manual/en/function.extract.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...