Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как проверить константу на пустое значение
 
 автор: max_ivanov   (29.07.2010 в 15:36)   письмо автору
 
 

Пока что только там смог придумать


define ('DB', 'xxx');
$chkdb = DB;
if  (!empty($chkdb)) {echo DB;}


а просто if (!empty(DB)) {echo DB;} выдает ошибку
как лучше проверить чтобы константа имела не пустое значение

  Ответить  
 
 автор: sms-send   (29.07.2010 в 15:45)   письмо автору
 
   для: max_ivanov   (29.07.2010 в 15:36)
 

Зачем такая проверка может быть нужна в отношении константы?
Есть функция defined, для проверки наличия константы.

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 16:17)   письмо автору
 
   для: max_ivanov   (29.07.2010 в 15:36)
 

Если инициализация константы происходит явно:
define ('DB', 'xxx');
то зачем проверять, пустая ли она? А если динамически:
define ('DB', $somevar);
то просто проверяйте $somevar на пустоту перед объявлением константы:
<?php
if (!empty($somevar))
    
define ('DB'$somevar);
else
    echo 
'Переменная пуста, константа не объявлена';

  Ответить  
 
 автор: sim5   (29.07.2010 в 16:34)   письмо автору
 
   для: neadekvat   (29.07.2010 в 16:17)
 

$somevar - это разве константа?

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 16:55)   письмо автору
 
   для: sim5   (29.07.2010 в 16:34)
 

В моем примере - это значение константы

  Ответить  
 
 автор: sim5   (29.07.2010 в 18:47)   письмо автору
 
   для: neadekvat   (29.07.2010 в 16:55)
 

define ('DB', SOMEVAR), это я еще понимаю (ну или в нижнем регистре, хотя в верхнем удобнее для восприятия констант), но $somevar, это не константа, а тем более не ее значение.

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 18:56)   письмо автору
 
   для: sim5   (29.07.2010 в 18:47)
 

<?php
$somevar 
'Значение константы';
define ('DB'$somevar);
echo 
DB;


Так понятнее, о чем я?
Если значение константы неизвестно заранее, а определяется какой-либо переменной, то лучше перед определением этой константы проверить, не пусто ли значение переменной

  Ответить  
 
 автор: sim5   (29.07.2010 в 19:02)   письмо автору
 
   для: neadekvat   (29.07.2010 в 18:56)
 

$n = 12;
Как вы будете проверять - установлена ли (пустая ли) переменная $n, или установлено ли (пустое ли) значение 12?

Я только местами константу со значеним в комменте поменял, торопливость. )

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 19:06)   письмо автору
 
   для: sim5   (29.07.2010 в 19:02)
 

Не совсем понял вашего вопроса и то, как относится к теме, если честно

  Ответить  
 
 автор: sim5   (29.07.2010 в 19:09)   письмо автору
 
   для: neadekvat   (29.07.2010 в 19:06)
 

<?
define 
('DB'"значение");
//так можно проверять? 
if (!empty('значение'))....
//или тоже самое для переменной
$n 5;
if (!empty(
5)) .....

Такое возможно?

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 19:14)   письмо автору
 
   для: sim5   (29.07.2010 в 19:09)
 

Вы не так меня понимаете. Я не говорю проверять значение константы после ее объявления.
Я говорю, что, если значение константы объявляется динамически, например:
<?php
$int 
= (int) $_POST['someNum'];
define('DB'$int);

то вместо того, чтобы пытаться проверить на пустоту значение константы (и вытворять то, что предложил автор) лучше сделать так:
<?php
$int 
= (int) $_POST['someNum'];
if (!empty(
$int))
    
define('DB'$int);
else
    echo 
'Значение константы не может быть пустым';

Хотя пример грубый, т.к. то, может ли константа иметь значение 0, определяется условиями задачи

  Ответить  
 
 автор: sim5   (29.07.2010 в 19:19)   письмо автору
 
   для: neadekvat   (29.07.2010 в 19:14)
 

<?
if (!empty($somevar)) 
    
define ('DB'$somevar); 
else 
    echo 
'Переменная пуста, константа не объявлена';

Вот объясните что вы проверяете здесь - несуществующее (или может быть существующее) значение (которого вы собственно можете и не знать, в оличии от объявленного имени константы) константы? Как можно по значению узнать установлена ли константа/переменная. Такое можно "сотворить" только косвенно, обнаружив "похожий след" в чем-то.

$_POST['someNum'] - это вы по ключу вам известному проверяете его значение, а не с бухты барахты сразу "аля-ля значение" его значение.

  Ответить  
 
 автор: sms-send   (29.07.2010 в 19:23)   письмо автору
 
   для: sim5   (29.07.2010 в 19:19)
 

По коду же видно, что наличие и значение константы в нём не проверяется, она здесь только ещё (возможно) будет объявлена, а может и не будет.

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 19:27)   письмо автору
 
   для: sim5   (29.07.2010 в 19:19)
 

*Вздохнув*
Задача автора - проверить, не пустое ли значение у константы.
Я предложил проверять переменную (которая впоследствии станет значением константы) на пустоту перед тем, как объявлять константу. Сказав также, что если константа имеет постоянное значение (определено в коде ручками своими), то проверка не нужна в принципе

  Ответить  
 
 автор: sim5   (29.07.2010 в 19:36)   письмо автору
 
   для: neadekvat   (29.07.2010 в 19:27)
 

Ах вон в чем дело, я то серый код автора не прочитал, а на вашу проверку сразу обратил внимание, мозги и завернулись - по неизвестному значению узнавать родителя. )

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 19:40)   письмо автору
 
   для: sim5   (29.07.2010 в 19:36)
 

Бывает :) У нас тут (север) жара на солнце за 40 - мозг плавится, тоже все путаю, работу еле делаю)

  Ответить  
 
 автор: sim5   (29.07.2010 в 19:47)   письмо автору
 
   для: neadekvat   (29.07.2010 в 19:40)
 

Кстати:

$chkdb = DB; 
if  (!empty($chkdb)) {echo DB;}

напечатает DB, то есть все определено и ОК полное!, если будет подавлен вывод ошибок.

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 19:55)   письмо автору
 
   для: sim5   (29.07.2010 в 19:47)
 

Так мб лучше тогда
if (DB !== '') echo DB;

  Ответить  
 
 автор: sim5   (29.07.2010 в 19:58)   письмо автору
 
   для: neadekvat   (29.07.2010 в 19:55)
 

А это уже проверка константы, хотя корявым способом, и с ошибками.

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 20:07)   письмо автору
 
   для: sim5   (29.07.2010 в 19:58)
 

И почему-то там напечаталось два "равно"
Ну да ладно, мое предложение иное.

  Ответить  
 
 автор: sim5   (29.07.2010 в 20:09)   письмо автору
 
   для: neadekvat   (29.07.2010 в 20:07)
 

Вот верное предложение:

автор: sms-send (29.07.2010 в 15:45) письмо автору
для: max_ivanov (29.07.2010 в 15:36)

все остальное от лукавого, да и приравнивать константу переменной, ну это как надеяться легким движением руки превратить лом в травинку. Смысла никакого.

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 20:17)   письмо автору
 
   для: sim5   (29.07.2010 в 20:09)
 

Но это же несколько иная задача.
Если брать как аналог переменную, то автор спрашивает, как сделать
!empty($variable)
А sms-send показал, как сделать
isset($variable)
Хотя, по правде сказать, у меня еще никогда задачи автора не возникало..

  Ответить  
 
 автор: sim5   (29.07.2010 в 20:18)   письмо автору
 
   для: neadekvat   (29.07.2010 в 20:17)
 

Задача автора, скорее всего, возникла от недопонимания назначений (а может и их сути) констант и переменных.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования