С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89

Как передаются переменные в функцию?

23.12.2015, 19:05. Показов 2621. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форма:
PHP
1
2
3
4
5
6
$object=new user;
if (isset($_POST["user-auth"])){
            $login=$_POST['user-name'];
            $password=$_POST['user-password'];
            $object->login("$login $password");
        }
Обработка:
PHP
1
2
3
4
5
6
7
8
9
10
<?php
    class user {
        var $login;
        var $password;
       
        public function login($password) {
        echo $login, $password;
    }
 
}
Почему в функцию login(), переменная $login передается через переменную $password??
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2015, 19:05
Ответы с готовыми решениями:

Не передаются переменные в функцию
Специалисты, помогите, пожалуйста. По кнопке должна заполняться форма. А с передаваемыми переменными беда. &lt;script...

Переменные не передаются
Здраствуйте, нужна помощь делаю бот для телеграмма, но вопрос не в боте а в коде Переменные sleep = 0, def = 0, atk = 0; В...

Не передаются переменные с AJAX
Ребят, такая проблема. Хочу передать 9 переменных методом $_POST, используя AJAX, но в итоге ничего не происходит. Помогите пожалуйста. ...

13
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
23.12.2015, 19:11
Цитата Сообщение от Vassillissk Посмотреть сообщение
Почему в функцию login(), переменная $login передается через переменную $password??
локальная переменная всегда имеет приоритет.

Не по теме:

Хватит писать на глиняных табличках. Слезайте с php4, php7 уже вышел

0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
23.12.2015, 19:19  [ТС]
wq, А что не так? Как на PHP7 это будет реализовано?
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
23.12.2015, 20:01
Цитата Сообщение от Vassillissk Посмотреть сообщение
А что не так?
"не так" в том, переменная $password -это локальная переменная объявленная в методе login(), она и используется. А к свойствам объекта обращаются, например, вот так: $this->password

Не по теме:

Цитата Сообщение от Vassillissk Посмотреть сообщение
Как на PHP7 это будет реализовано?
если заметили это замечание помечено как, "не по теме". Хотя если вы историк и вас интересуют мертвые языки, приношу извинения

0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
23.12.2015, 20:30
Цитата Сообщение от Vassillissk Посмотреть сообщение
Почему в функцию login(), переменная $login передается через переменную $password??
В функцию (а точнее метод user::login()) переменная $login передается не через переменную $password, а через "$login $password". Обратите внимание на строчку:
PHP
1
$object->login("$login $password");
То есть в функцию передается строка, которая состоит из переменной $login и $password, разделенных пробелом.

Теперь что касается скрипта в целом.

Во-первых, он выведет ошибку уровня E_NOTICE:
Code
1
Notice: Undefined variable: login in D:\web\www\html\index.php on line ...
Так как переменная $login в области видимости класса нигде не определена.

Во-вторых, в функции login($password) входной параметр назвали $password непонятно почему. Там можно с тем же успехом написать $asdfasdgfd. Туда в любом случае попадет, как мы уже выяснили вначале, строка, состоящая из логина и пароля разделенная запятыми.

Не по теме:

Нужно ли говорить, что код сам по себе не имеет вообще никакого смысла, а посты автора выше это не ответ по теме, а замечание к коду (который я бы кодом не назвал)...

0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
23.12.2015, 20:38  [ТС]
pav1uxa, ему далеко до смысла. Как мне передать в функцию 2 переменные? Так же я пробовал передать их в класс "$object->login=$login; $object->password=$password;" что не получилось. Сделайте пожалуйста 2 примера. 1) Передать переменные $login и $password в метод класса 2) Передать переменные $login и $password в свойства класса. И прошу объяснить, чем устарел код по сравнению с PHP7.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
23.12.2015, 20:56
Цитата Сообщение от Vassillissk Посмотреть сообщение
И прошу объяснить, чем устарел код по сравнению с PHP7.
На это не обращайте внимания.
Цитата Сообщение от Vassillissk Посмотреть сообщение
Как мне передать в функцию 2 переменные? Так же я пробовал передать их в класс "$object->login=$login; $object->password=$password;" что не получилось. Сделайте пожалуйста 2 примера. 1) Передать переменные $login и $password в метод класса 2) Передать переменные $login и $password в свойства класса.
Я Вам советую, сначала, разобраться с классами просто, без всяких POST данных и форм:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
class User
{
    private $login;
    private $password;
    
    public function login($login, $password)
    {
        $this->login    = $login;
        $this->password = $password;
    }
    
    public function printAccount()
    {
        echo $this->login.":".$this->password;
    }
}
 
$u = new User();
 
$login = "hello";
$password = "world";
 
$u->login($login, $password);
$u->printAccount();
0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
23.12.2015, 21:37  [ТС]
pav1uxa, Разобрался, как передать переменные в метод класса и вывести их.
PHP
1
2
3
4
5
6
$object=new user;
if (isset($_POST["user-auth"])){
            $login=($_POST['user-name']);
            $password=md5($_POST['user-password']);
            $object->login($login, $password); 
        }
PHP
1
2
3
4
5
6
7
8
9
class user{
    private $login=1;
    private $password=2;
    public function login($login, $password)
    {
        echo "$login";
        echo ':';
        echo "$password";
    }
Но не понимаю, как передать переменные в свойства класса и как их вывести?
Выводить в методе получается вот так:
PHP
1
2
3
4
5
6
7
class user{
    private $login=1;
    private $password=2;
    public function login($login, $password)
    {
         echo $this->login.":".$this->password;
    }
Но вот так не получается:
PHP
1
2
3
4
5
6
7
8
9
10
11
class user{
    private $login=1;
    private $password=2;
    public function login($login, $password)
    {
        $login=$this->login;
        $password=$this->password;
        echo "$login";
        echo ':';
        echo "$password";
    }
А ваши строчки, как я понимаю, наоборот присваивают свойствам класса значения из метода:
PHP
1
2
$this->login    = $login;
$this->password = $password;
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
23.12.2015, 22:45
А какую цель Вы преследуете?) Вам показали, как присвоить значения свойствам объекта. $this указывает на используемый в данный момент объект...
0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
23.12.2015, 23:59  [ТС]
СлаваВирус, знать-то надо )
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
24.12.2015, 00:09
Ну смотрите в Вашем случае
PHP
1
2
3
4
5
6
7
8
9
10
11
class user{
    private $login=1;
    private $password=2;
    public function login($login, $password)
    {
        $login=$this->login;
        $password=$this->password;
        echo "$login";
        echo ':';
        echo "$password";
    }
Вы допустим передали методу какие то атрибуты
PHP
1
$user->login('log', 'pas');
Далее вы затираете значение 'log', переменной, объявленной в классе. Соответственно и вывод у Вас всегда будет 1:2. Бессмыслица в общем)
0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
24.12.2015, 00:19  [ТС]
СлаваВирус, я поставил эти значения, что бы попробовать вывести.
PHP
1
2
3
4
5
6
7
8
9
10
11
class user{
    private $login=1;
    private $password=2;
    public function login($login, $password)
    {
        $login=$this->login;
        $password=$this->password;
        echo "$login";
        echo ':';
        echo "$password";
    }
Здесь мне должно вывести
HTML5
1
1:2
Но не выводит. И просто передать значение свойству класса тоже не получается.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
24.12.2015, 00:28
Цитата Сообщение от Vassillissk Посмотреть сообщение
Но не выводит.
А где запуск функции?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class user
{
    private $login=1;
    private $password=2;
    public function login($login, $password)
    {
        $login=$this->login;
        $password=$this->password;
        echo "$login";
        echo ':';
        echo "$password";
    }
}
 
$object = new user();
$object->login('some1', 'some2');
В таком виде работает. Только это бредовый код. Как делать по-нормальному написали в сообщении №7.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
24.12.2015, 13:38
Лучший ответ Сообщение было отмечено Vassillissk как решение

Решение

Цитата Сообщение от Vassillissk Посмотреть сообщение
Но не понимаю, как передать переменные в свойства класса и как их вывести?
Цитата Сообщение от Vassillissk Посмотреть сообщение
А ваши строчки, как я понимаю, наоборот присваивают свойствам класса значения из метода:
Это одно и то же. Просто во втором варианте Вы это как то коряво описали. В моем коде как раз-таки свойствам класса присваиваются переменные (через метод login()), а потом они (свойства класса) выводятся (через метод printAccount()).

Обратите внимание, что я сделал эти свойства приватными (модификатор private). То есть доступ к ним имеют только методы класса (например как я их вывел через метод printAccount()). К ним нельзя обратиться извне. Если хотите сделать их публичными, замените private на public, и тогда можно будет делать так (обратите внимание на последние 3 строчки, они находятся вне метода класса и даже вне класса):

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class User
{
    public $login;
    public $password;
    
    public function login($login, $password)
    {
        $this->login    = $login;
        $this->password = $password;
    }
}
 
$u = new User();
 
$login = "hello";
$password = "world";
 
$u->login($login, $password);
 
echo $u->login;
echo ":";
echo $u->password;
или даже так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class User
{
    public $login;
    public $password;
}
 
$u = new User();
 
$login = "hello";
$password = "world";
 
$u->login       = $login;
$u->password = $password;
 
echo $u->login;
echo ":";
echo $u->password;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2015, 13:38
Помогаю со студенческими работами здесь

В ссылку не передаются переменные
После регистрации, пользователю на почту приходит ссылка, для активации аккаунта, ссылка выглядит следующим образом: $valid_sql =...

Не передаются переменные из формы
здраствуйте, пожайлуста, помогите , не могу найти ошибку(не показует переменные): в html-файле: &lt;html&gt; &lt;head&gt; ...

Undefined variable (Не передаются переменные)
&lt;?php //заголовок header (&quot;Content-type:text/vnd.wap.wml; charset=utf-8&quot;); print '&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;'. ...

Не передаются переменные через cURL
Добрый день, пишу авторизацию для сайта и возникла проблема при отправке пост запроса. curl_setopt($ch, CURLOPT_POSTFIELDS,...

CodeIgniter: Не передаются переменные из контроллера в представление
Здраствуйте, уважаемые форумчане. У меня не получается кое-что в CodeIgniter, вот собственно в чем суть вопроса. Я подключаю в контролере...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru