Автор Тема: Първият ни клас  (Прочетена 8325 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

gatakka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 19
  • Публикации: 681
Първият ни клас
« -: 28 Декември 2009, 17:37:33 »
** Тази тема дискутира:: Първият ни клас **
Автор: Гатака
« Последна редакция: 15 Април 2015, 22:49:12 от Avalanche »
За да знаеш трябва да питаш,
но за да знаеш някой трябва да ти отговори на питанията.
Добре дошли в Научи Ме!

SocialEvil

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 3
  • -Получени: 4
  • Публикации: 463
Отг:Първият ни клас
« Отговор #1 -: 17 Януари 2010, 23:57:36 »
Нещо не вдянах логиката на тези Setters And Getters.

Нали целта на занятието е, като имаме private свойство (за да не го промени някой, на нещо дето не ни трябва ( в урока е даден примера да промени свойството на 0))

Та, тогава използваме getters and setters. Добре де, ама нали като имаме setter, някой пак може чрез него да смени стойността.

Та каква е логиката да правим свойство private, protected, при положение, че пак можем да сменим стойността отвън??

Понеже не намирам логика, значи нещо изпускам, та някой може ли да ми обесни - какво?
Please allow me to introduce myself
I'm a man of wealth and taste
I've been around for a long, long year
Stole many a man's soul and faith

gatakka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 19
  • Публикации: 681
Отг:Първият ни клас
« Отговор #2 -: 18 Януари 2010, 09:50:24 »
Ако нямаш __get или __set когато някой напише $this->abc и abc не съществува, ще се създаде. Тоест ти не знаеш кой кога как и защо ще създаде свойство в обекта ти.
Ако имаш __set той ВИНАГИ, ама абсолютно винаги се извиква и ти решаваш дали да го сложиш това свойство или не.
Тоест __set ти дава възможност да  " слушаш "  какво се опитва да се сложи в обекта ти.
при __get ситуацията е подобна,но само при взимане. Ако разгледаш шаблона  " Регистри "  ще видиш колко гъвкав става обекта.
За да знаеш трябва да питаш,
но за да знаеш някой трябва да ти отговори на питанията.
Добре дошли в Научи Ме!

NoBBy

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 4
  • -Получени: 38
  • Публикации: 309
Отг:Първият ни клас
« Отговор #3 -: 18 Януари 2010, 11:26:18 »
Аз не съм сигурен дали точно това пита SocialEvil, за това ще отговоря така както аз разбрах въпроса ;)

Представи си следната ситуация, имаш някакъв клас за човек, със свойство за години. Ако оставиш свойството публично, някой лесно би могъл да въведе невалидна стойност -5 примерно. За това слагаш свойството private и правиш необходимите проверки в setAge() или там както го кръстиш метода. Та за мен особената роля на setter и getter-и те е точно да извършва някаква проверка на стойността преди използването и

Stilgar

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 42
  • Публикации: 1406
    • The Sietch
Отг:Първият ни клас
« Отговор #4 -: 18 Януари 2010, 13:25:53 »
логиката ти моментално пропада като погледнем простия факт, че 90% от accessors са директно присвояване или връщане на полето в средностатистическата програма.

intel

  • Гост
Отг:Първият ни клас
« Отговор #5 -: 28 Юни 2010, 06:44:10 »
Момци не се карайте бре!
Незнам дали @...Evil го е схванал, но реално, той питаше  " каква ни е файдата на тия сетове и гетове, като правят същото нещо " .

(Обяснението е малко нубско, но логиката е точно такава!)

Значи файдата/разликата от тях е следната.
В единия случей когато е публичен, всеки ама всеки, който изпълни скрипта( php файла), ще може да промени това свойство. Как ще го направи няма значение(бъг, хак или просто хардкодване). Но той ще може да го направи - т.е. той има достъп до това свойсто директно в скрипта(той = всеки). И щом има достъп, ще може да промени стойността му или характеристиките му, по правилно казано.

Т.е. Обекта наистина не му дреме, кой ще му промени свойствата в дадена инстанция. Това е когато е публик.

----------------------------------------------------------------


Обаче, когато дадено свойство на обекта стане прайвит -тогава само обекта може да си го променя сам или само обекта може да разреши на някой да го промени(т.е. ако обекта може да разреши промяна на свойството според някаква проверка, но за да се достъпи, ние питаме обекта преди това - дали може).


Така че действията, който са разрешени са само вътре в класа.
И след това когато класа стане обект в паметта, само от методите написани в класа, ще им позволи смяната на привейт свойството евентуално след проверка.

При този случей си го представи(обяснението пак е грешно, но логиката е тази), все едно при публик не се иска  " парола " , а при прайвит се иска  " парола " .

И тази  " парола "  всъщност ти е я проверката в метода, я някакво условие и пр.

Надявам се немного ясното ми обяснение да помогне на някой.
Ако трябва и примерна схема ще начертая :D

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re:Първият ни клас
« Отговор #6 -: 16 Юли 2011, 19:31:29 »
Здравейте и от мен
Това е обичаен код. Изълнението връща един огромен списък. Що за чудеса са това?

<?php
class Person{
}
$classes=get_declared_classes();
foreach (
$classes as $class){
    
    echo 
$class.'<br/>';
}

И много повече ме вълнува за абстрактния, който може да вмъкне отнякъде нещо и да ти счупи кода? Как така? През форма ли ще го вмъква, през адресното поле на браузъра ли?  Все пак хостинга си ваш, php скриптовете се изпълняват от интерпетатора и сървъра, и лошият няма пряк достъп до файловете ви, че да ги пренаписва. Надявам се да не е много блондински въпроса ми.

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Re:Първият ни клас
« Отговор #7 -: 16 Юли 2011, 21:46:48 »
Аз определено не разбрах въпроса ти!
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re:Първият ни клас
« Отговор #8 -: 16 Юли 2011, 22:38:44 »
Копирай кода. Изпълни го на локалния си сървър и виж резултата в браузъра. Това бе първия въпрос и конкретно, що за дълъг списък е това?

Вторият въпрос е относно диспута в теза тема. Всеки един отговаря хипотетично, как някой отнякъде ще цъфне и ще прецака кода. Аз питам как този някой ще постигне това?

Сега разбра ли?

pikefisher

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 0
  • Публикации: 51
Re:Първият ни клас
« Отговор #9 -: 17 Юли 2011, 00:29:46 »
Твоят код се изпълнява така, че прави $classes масив, съдържащ имената на всички декларирани(дефинирани) класове и после обхожда този масив. Ето малко инфо от документацията(предполагам, че си го прочел ама нищо): http://php.net/manual/bg/function.get-declared-classes.php.
По втория въпрос има доста по-компетентни от мен, нека те се изкажат.

federer_11

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 1
  • Публикации: 931
  • ULTRAS LEVSKI
Re:Първият ни клас
« Отговор #10 -: 17 Юли 2011, 10:10:01 »
Здравейте и от мен
Това е обичаен код. Изълнението връща един огромен списък. Що за чудеса са това?

<?php
class Person{
}
$classes=get_declared_classes();
foreach (
$classes as $class){
    
    echo 
$class.'<br/>';
}

И много повече ме вълнува за абстрактния, който може да вмъкне отнякъде нещо и да ти счупи кода? Как така? През форма ли ще го вмъква, през адресното поле на браузъра ли?  Все пак хостинга си ваш, php скриптовете се изпълняват от интерпетатора и сървъра, и лошият няма пряк достъп до файловете ви, че да ги пренаписва. Надявам се да не е много блондински въпроса ми.

Функцията get_declared_classes() ти връща списък с всички заредени класове в php файла. :)
(x)HTML, CSS, PHP, MySQL, XML, WML, JavaScript (jQuery)

Darnel

  • Full Member
  • ***
  • Благодарности
  • -Казани: 32
  • -Получени: 3
  • Публикации: 139
Re: Първият ни клас
« Отговор #11 -: 07 Юни 2016, 16:44:15 »
На мен ми стана интересно нещо съвсем просто в този урок.
Защо Сет-ъра е setCons() а гет-ъра е getConsT() ? Не би ли трябвало имената на методите да отговарят на това което искаме да направим а именно проверката за consT и за да съм по-ясен setConst() и getConst() ?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Първият ни клас
« Отговор #12 -: 07 Юни 2016, 21:11:22 »
На мен ми стана интересно нещо съвсем просто в този урок.
Защо Сет-ъра е setCons() а гет-ъра е getConsT() ? Не би ли трябвало имената на методите да отговарят на това което искаме да направим а именно проверката за consT и за да съм по-ясен setConst() и getConst() ?
Правописна грешка, обърка се човека
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!