powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP __construct($a,$b) а если $b не будет?
9 сообщений из 9, страница 1 из 1
PHP __construct($a,$b) а если $b не будет?
    #38438415
Фотография vip-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?php
ini_set("display_errors","1");
ini_set("error_reporting", E_ALL); 
class test{
public $a;
public $b;
function __construct($a,$b)
{
$this->a=$a;
$this->b=$b;
}
function prov (){
if ($this->a){echo "а";}
if ($this->b){echo "b";}
}
}
$ob=new test($_GET['a'],$_GET['b']);
$ob->prov();
?>


выдает Notice: Undefined index: b

p.s. читаю книгу по ооп, и вот возник вопрос и текущая проблема в моем коде...
другими словами некоторых данных в конструктор может не поступать вовсе, как это обработать или правильно написать (описание данной ситуации не нашел....)
...
Рейтинг: 0 / 0
PHP __construct($a,$b) а если $b не будет?
    #38438418
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно так
Код: php
1.
function __construct($a = 'default value', $b = 'default value')
...
Рейтинг: 0 / 0
PHP __construct($a,$b) а если $b не будет?
    #38438424
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее так, в ваше случае

Код: php
1.
$ob=new test(isset($_GET['a'])? $_GET['a'] : 'default value', isset($_GET['b'])? $_GET['b'] : 'default value');
...
Рейтинг: 0 / 0
PHP __construct($a,$b) а если $b не будет?
    #38438454
Фотография vip-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
огромное спасибо, только что проверил и разобрался
удобная "весч"D)
...
Рейтинг: 0 / 0
PHP __construct($a,$b) а если $b не будет?
    #38438476
Фотография vip-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще читал, вроде как можно задавать критерий входных параметров в метод/функцию
вот только пересмотрел, написано так:
Можно определить строго, что аргумент должен быть массивом - добавлено с версии 5.1

Public Function write (array $a)

Либо параметр должен быть 0
Public Function write ($a=0)

а такого нету, что если параметр в методе/функции не задан, то берется значение по умолчания без проверки if?
...
Рейтинг: 0 / 0
PHP __construct($a,$b) а если $b не будет?
    #38438502
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора такого нету, что если параметр в методе/функции не задан, то берется значение по умолчания без проверки if?

Ну так

Код: php
1.
Public Function write ($a=0)
...
Рейтинг: 0 / 0
PHP __construct($a,$b) а если $b не будет?
    #38438537
Фотография vip-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
все рабобрался)
Вариант 1:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?php
ini_set("display_errors","1");
ini_set("error_reporting", E_ALL); 
class test{
public $a;
public $b;
function __construct($a,$b='default')
{
$this->a=$a;
$this->b=$b;
}
function prov (){
if ($this->a){echo $this->a;}
if ($this->b){echo $this->b;}
}
}
$ob=new test($_GET['a']); // в $_GET['a'] =2 т.е. переменная существует и ей присвоено значение
$ob->prov();
//Получаем : 2 default
?>



Вариант 2:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?php
ini_set("display_errors","1");
ini_set("error_reporting", E_ALL); 
class test{
public $a;
public $b;
function __construct($a,$b='default')
{
$this->a=$a;
$this->b=$b;
}
function prov (){
if ($this->a){echo $this->a;}
if ($this->b){echo $this->b;}
}
}
$ob=new test($_GET['a'],$unnamed); //второй параметр не существующая переменная
$ob->prov();
// в данном примере будет ошибка и значение по умолчанию не подставится
//Получаем : 2 Notice: Undefined variable: a
?>



Вариант 3:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?php
ini_set("display_errors","1");
ini_set("error_reporting", E_ALL); 
class test{
public $a;
public $b;
function __construct($a,$b='default')
{
$this->a=$a;
$this->b=$b;
}
function prov (){
if ($this->a){echo $this->a;}
if ($this->b){echo $this->b;}
}
}
$ob=new test($_GET['a'],$_GET['a']);
$ob->prov();
////Получаем : 2 2
?>



Будет многим полезно
...
Рейтинг: 0 / 0
PHP __construct($a,$b) а если $b не будет?
    #38438719
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vip-y,

А после обеда гуру пошел курить Магические методы
...
Рейтинг: 0 / 0
PHP __construct($a,$b) а если $b не будет?
    #38438892
Код: php
1.
$ob = new test($a =& $_GET['a'], $b =& $_GET['b']);
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP __construct($a,$b) а если $b не будет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]