[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Что именно значит "->"
Страницы: 1, 2, 3
Valeriya12
В свое оправдание, я постаралась поставить этот вопрос в Google но не получила те результаты (даже доказательство прикрепила)

Так, кто-то может объяснить мне что это значит?

Например в этом коде:

if($con->connect_errno)
{
header("location:logout.php");
}


Понятно, что connect_errno это функция MySqli,
но "->" это что?
Как "==" ?
sergeiss
Читай тут: http://www.php.net/manual/ru/language.oop5.properties.php

И занеси этот сайт в свои любимые ссылки smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Encoder
Есть класс User и у него есть свойство name:

class User {
public name = 'myName';
}


Теперь чтобы получить доступ к свойству name, нужно создать экземпляр класса, а дальше с помощью стрелки указать имя свойства:


$user = new User; // Создаем объект, экземпляр класса User.
echo $user->name; // Выведет на экран myName


Вот такой пример, простой надеюсь понятный. А если более детально то гуглите по такому запросу: PHP и ООП
Valeriya12
Я читала и возникали вопросы-- например

1) Какая связь между свойствами и функциями? Потому, что выглядят те же самые. И при чем здесь "класс"? Как он связывается к всему? Понятно, что класс, это "что-то с размером", но почему он и нужен вообще?

2) Понятно теперь, что "->" это доступ к нестатическим свойствам..

Читала дальше и...

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


Так. Насколько я понимаю, экземпляр класса находится ВНУТРИ свойств...и только нестатические свойства позволяют обращаться к ним. Я правильно понимаю?
sergeiss
Мне кажется, что чтобы ответить на твои вопросы + те вопросы, что появятся в процессе, придется пересказать всё содержание этого раздела http://www.php.net/manual/ru/language.oop5.php

Если совсем кратко - класс это некий объект, который содержит как свойства (свои личные переменные, некоторые из которых, приватные, недоступны извне), так и методы (функции, которые имеют доступ ко всем переменным, в т.ч. приватным свойствам).

Пример из жизни (в очень кратком изложении) smile.gif Каждый человек - это экземпляр класса "человек". У всех есть свойства, одни и те же (рост, вес, количество глаз, наличие определенных внутренних органов). И функции (думанье, движение, пищеварение...). Разница в том, что у каждого "представителя класса" свои величины этих свойств. И функции работают со своими свойствами. И получаем, что вроде как люди однотипно устроены, но, в то же время, каждый индивидуален.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valeriya12
Думаю, что начинаю понимать. Класс определяет "что-то" как "существует".
То есть, это не команда как функция. А внутри класса, каждая порция информации считается "свойства".

Только одна проблема. Когда я работала с файлом...у меня был простой вид массивов


array (size=3)
0 =>
'first_name' => string 'Maayan' (length=6)
'last_name' => string 'Levy' (length=4)
'password' => string '1234' (length=4)
1 =>
'first_name' => string 'Moshe' (length=5)
'last_name' => string 'Cohen' (length=5)
'password' => string '4321' (length=4)
2 =>
'first_name' => string 'Moshe' (length=5)
'last_name' => string 'Cohen' (length=5)
'password' => string '4321' (length=4)


А теперь когда работаю с MySqli у меня есть:

array (size=3)
0 =>
object(stdClass)[3]
public 'first_name' => string 'Maayan' (length=6)
public 'last_name' => string 'Levy' (length=4)
public 'password' => string '1234' (length=4)
1 =>
object(stdClass)[4]
public 'first_name' => string 'Moshe' (length=5)
public 'last_name' => string 'Cohen' (length=5)
public 'password' => string '4321' (length=4)
2 =>
object(stdClass)[5]
public 'first_name' => string 'Moshe' (length=5)
public 'last_name' => string 'Cohen' (length=5)
public 'password' => string '4321' (length=4)


Почему не можно оставить этот массив неопределенный (то есть, без "object(stdClass)") как в первом примере? Это же нормально работает даже когда неопределенный!

Кстати, нравиться изложение :)
killer8080
Цитата (Valeriya12 @ 26.06.2014 - 11:36)
Почему не можно оставить этот массив неопределенный (то есть, без "object(stdClass)") как в первом примере?

если нужен массив, значит бери массив smile.gif
http://us1.php.net/manual/en/mysqli-result.fetch-assoc.php
AllesKlar
sergeiss
Цитата
класс это некий объект

Не путайте девочку smile.gif
Класс - это тип, описаный програмистом.



_____________
[продано копирайтерам]
Encoder
Вообщем читал я книгу по ООП и там приводится такой пример. Класс это план дома, то есть там описано, количество дверей, окон, где они будут стоять, как они будут открываться и.т.д. А объект это созданный дом по этому плану. А для чего нужен класс, для того чтобы все сгруппировать, есть у вас класс User а в нем описываются все переменные - то есть свойства и функции - то есть методы относящийся к классу User. Вы открыли файл и сразу понятно что у юзера есть за свойства и методы.
Encoder
Хотя это поверхностно, на самом деле ООП держится на 3 китах инкапсуляция, полиморфизм и наследование.
FatCat
Цитата (sergeiss @ 26.06.2014 - 08:52)
Пример из жизни (в очень кратком изложении)

Я не программист, базовое образование у меня медицинское, поэтому попробую объяснить как и для чего я использую классы.
Класс - это в самом деле набор функций и набор данных, к которым я могу получать доступ когда мне понадобится.
Например, на этом форуме есть класс работы с БД. В этом классе есть все инструменты работы с БД, в том числе, и есть нужные мне переменные, например есть переменная, в которую считается количество запросов к БД.
Если я программирую отображение страницы форума, я сначала программирую проверку авторизации, и из класса авторизации обращаюсь к функциям работы с БД. Затем программирую класс прав доступа по группам, получаю информацию о группе доступа от класса авторизации, и снова для работы с БД обращаюсь к классу БД. Потом генерация самой страницы - тоже информация от класса прав доступа и тоже для работы с БД обращения к классу БД.

Ничто не мешает всё то же самое написать в процедурном стиле, но код станет громоздким и непонятным.

_____________
Бесплатному сыру в дырки не заглядывают...
twin
Есть такое понятие - спагетти-код. Поборники ООП его сильно боятся в силу того, что не могут разобраться в собственном коде. От того и придумали эти глупости про трех китов.

На самом деле это не киты вовсе, а глиняные ноги Колосса. Я сейчвс про PHP говорю, остыньте.

В PHP как обычно принято всё усложнять. Потому что язык довольно прост. И привносить сюда абстракции из привычек других языков конечно модно, но не всегда эффективно.

Я уже предлагал, еще раз повторю. Я готов принять вызов. Пишем любое приложение по определенному ТЗ, я на вольной парадигме, вы на ООП. И сравним по всем параметрам.

Кто готов не просто декларациями доказать постулат? smile.gif

Больше скажу, кто меня победит, получит от меня приз. 1000 рублей. Не ахти какая сумма, но всё же стимул.



_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
А, да. ООП, это парадигма. Я оставляю за собой возможность использования любых классов. Как и отдельных функций и вообще процедурки.

Я волен во всем, а аппонент должен следовать принципам ООП.

Есть смелые или только книжОк начитались?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
sergeiss
Цитата (twin @ 26.06.2014 - 23:39)
Больше скажу, кто меня победит, получит от меня приз.

Николай, тебя нельзя победить. Потому что ты все равно не услышишь доводы другой стороны wink.gif Ты ж ведь упорно отрицаешь все плюсы ООП, подчеркивая только плюсы процедурного подхода. При таких подходах ничего доказать не получится. А у ООП есть плюсы. Точно также, как есть минусы у процедурки.
Да еще и от прямизны рук очень зависит. Можно испоганить и то, и другое.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
twin
Цитата
а аппонент должен следовать принципам ООП.

Нативный код есть даже в яве - богине ООП
Можно, конечно, написать
a = new Integer(5);

но это уже параноя.

Лично для меня основное преимущество ООП, это командная разработка большого проекта.
Где есть архитектор и кодеры.
Где ты получаешь готовый интерфейс и реализуешь класс.
Можно, конечно и в процедурном стиле написать, но могут потом убить.

1000 рублей - это, конечно, не плохо, можно еще и шоколадку, но врядли кто-то будет убивать полгода своего времени на спор ради шоколадки.
Что? Откуда полгода?
Ну, потому что написанное за месяц процедурное приложение - это, несомненно, хорошая программа, калькулятор, например.

Нет, можно сказать, что большое приложение тоже возможно. Делаем библиотеки, собираем данные в массивы и прочие составные типы, глобализируем их для повсеместной доступности и т.п и т.д. ... постойте.. это велосипед? Корявый велосипед ООП?

ничего личного.
Просто нельзя сравнивать теплое и мягкое.
Микроконтроллеры никто на ООП не программирует.
Систему бухгалтерского учета, которая должна постоянно развиваться, никто на нативе не пишет.




_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.