Stránka: 2 z 2
| [ Príspevkov: 59 ] | 1, 2 |
Autor | Správa |
---|
Registrovaný: 20.10.08 Prihlásený: 21.06.22 Príspevky: 2602 Témy: 31 | 31 Bydlisko: Bratislava |
Duri ked si vezmes, ze od PHP 3 sa tam stale viac a viac lepia objektove ficury, je dost mozne, ze raz z neho bude plnohodnotny objektovy jazyk. Mozno horizont piatich rokov (vtedy uz aj tak budu vsetci pouzivat nejaky framework takze je to mozno aj jedno). Samozrejme vysledok bude stat za
_________________ Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB |
|
Registrovaný: 26.11.06 Prihlásený: 09.10.24 Príspevky: 4118 Témy: 319 | 319 Bydlisko: HE/BA |
Nechcem sa vám objektovím miešať do diskusie a podrypovať, keď viem len procedurálne a o OOP ani neuvažujem. Ale neznamená objektové náhodou to, že mám nejaký objekt, napríklad element v DOM(JS) alebo auto v hre a použijem naňho nejakú metódu, napríklad, .hide(), alebo .destroy()? Ak áno, tak potom načo nám je ku textom objektové správanie? Chápem, že je jednoduchší zápis ale načo meniť texty na "hmatateľné objekty"?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
No vsak prave kvoli tomu jednoduchsiemu a logickejsiemu zapisu. Stringy nemusia byt hmatatelnymi objektami, v JS to funguje tak, ze retazec, pokial nad nim zavolas metodu, sa interne pretypuje na objekt a hned potom sa pretypuje nazad na string. Tak programator ani nemusi vediet, ze robi s nejakymi objektami.
Ty ak robis v jQuery, mozno sa az tak nestretavas s cistym Javascriptom, lebo framework robi vsetko za teba, ale JS naozaj ponuka uzasnu vyhodu oproti PHPcku (aj ked je to dost blbe porovnavat) prave v tychto objektoch.
|
|
Registrovaný: 26.11.06 Prihlásený: 09.10.24 Príspevky: 4118 Témy: 319 | 319 Bydlisko: HE/BA |
Keďže pri mojom CMS ma sprdli, že nepoužívam OOP tak som sa v tom začal vŕtať. Vcelku rozumiem čo to OOP znamená: mám objekt, jemu môžem nastavovať vlastnosti, pýtať sa na jeho vlastnosti a manipulovať s nimi. Lenže nemôžem pochopiť aký by to malo prínos pre moje CMS, čo by som mohol spraviť pomocou tohto OOP. Čo by boli objekty, aké by mali metódy?
Pozeral som aj nejaké weby ale nič schopn som sa nedočítal.
|
|
Registrovaný: 28.12.10 Prihlásený: 10.05.11 Príspevky: 22 Témy: 3 | 3 |
Co z toho robis vedu, metody mas zapuzdrene funkcie v nejakej triede. Snad nechces robit tisic funkcii samostatne, opakovat podobne funkcie a pod. Ked to mas v triede mas to prehladne atd atd atd atd... vyhody mas na kazdom webe, naco to vypisovat.
|
|
Registrovaný: 26.11.06 Prihlásený: 09.10.24 Príspevky: 4118 Témy: 319 | 319 Bydlisko: HE/BA |
Dlho som nechápal čo by malo to OOP robiť v PHP ale po zadaní do Googlu "vyhoda oop php" mi vypľuvlo tému odtiaľto a príspevok http://www.pcforum.sk/oop-php-vyuzitie- ... tml#365656 (aj ten pred ním) a pochopil som: ide o to, že počas celého kódu môžem upravovať jedinú "funkciu", ktorú potom použijem.
|
|
Registrovaný: 01.04.10 Prihlásený: 08.10.11 Príspevky: 339 Témy: 0 | 0 |
Kup knihu, poskusaj ... pochopis
|
|
Registrovaný: 26.11.06 Prihlásený: 09.10.24 Príspevky: 4118 Témy: 319 | 319 Bydlisko: HE/BA | |
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | 17 |
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 01.04.10 Prihlásený: 08.10.11 Príspevky: 339 Témy: 0 | 0 |
tym by som na 100% nezacinal
navrhove vzory su pokrocila cast objektoveho programovnia, nevhodne pre zaciatocnikov
Ku knihe -> Neviem, nevyznam sa do PHP literatury
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno | |
Registrovaný: 24.09.06 Prihlásený: 15.07.23 Príspevky: 1427 Témy: 37 | 37 Bydlisko: Bratislava | |
Registrovaný: 26.11.06 Prihlásený: 09.10.24 Príspevky: 4118 Témy: 319 | 319 Bydlisko: HE/BA |
Ešte ma zaujíma, či je správne/vhodné/dobré pre každý riadok z databázy vytvoriť jeden objekt a či môže byť objekt zapísaný aj v poli.
|
|
Registrovaný: 20.10.08 Prihlásený: 21.06.22 Príspevky: 2602 Témy: 31 | 31 Bydlisko: Bratislava |
Flety robil som take mensie porovnavanie v codeignitery, ci je lepsie tahat veci z databazy do pola, alebo do objektu a praca s objektom bola rychlejsia.
_________________ Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB |
|
Registrovaný: 26.11.06 Prihlásený: 09.10.24 Príspevky: 4118 Témy: 319 | 319 Bydlisko: HE/BA |
Super, to by som si vedel potom aj nejako predstaviť využitie OOP. A môže byť objekt zapísaný aj v poli teda $pole['key'] = new objekt();?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
Flety, to si az tak lenivy, ze sa radsej spytas na fore, nez by si si to sam vyskusal? vytvorit nejaky primitivny priklad by ti zabralo par sekund...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 31.07.07 Prihlásený: 09.01.19 Príspevky: 327 Témy: 85 | 85 Bydlisko: Humenné |
Keď tak čítam vašu diskusiu tak si myslím, že by bolo načase aby som aj ja viac začal použivať objekty. Pravdupovediac ich teraz použivam minimálne priam vôbec a asi aj preto mám dosť problémy v JS programovať asi nemám to objektové zmyšľanie.
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 | 66 Bydlisko: Žilina |
a tvoj konštruktívny príspevok do diskusie? alebo si nám to len chcel oznámiť?
samozrejme, že keď nevieš vôbec oop, viacero vecí ide ťažšie..
_________________ C#, PHP, ... |
|
Registrovaný: 26.11.06 Prihlásený: 09.10.24 Príspevky: 4118 Témy: 319 | 319 Bydlisko: HE/BA |
Tak jemne obzerám OOP a vidím, že často sa používa :: čo to je ako to využívať?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno | |
Registrovaný: 21.03.10 Prihlásený: 18.10.16 Príspevky: 60 Témy: 19 | 19 Bydlisko: BratislavA |
Este som si nedocital celu tuto diskusiu ale niekedy to snad urobim V php som uz isty cas nieco porobil potom si si dal dlhu pauzu a zrazu viem ze uz niec nepoznam dost veci sa tu pomenilo a OOP je mi relativne novinky. Zatial som otom cital len v jedna knizke o PHP kde sa este pouziva PHP 4. Princip chapem vytvorena instancia vola konstruktor triedy, ktory vykonava nejake tie prikazy a do toho vola uzivatelom doplnene funkcie v triede. Vsetko je tu verejne takze ked uz vytvorim instanciu mozem volat hocico a hocikde. V tych pojmoch mam gulas ale tusim co je naco. Ale dost by ma zaujimalo ako presne funguje ta DEDICNOST pri rozsireni triedy. Skusal som spravit maly skriptik.
class.phpKód: /* class.php */ <?php class mysql {
var $dbserver = "localhost"; var $dblogin = "root"; var $dbpass = ""; var $databaza = "test"; var $spojenie;
function __construct() {
$this->spojenie = @mysql_connect($this->dbserver, $this->dblogin, $this->dbpass);
if(!$this->spojenie) { echo 'Chyba :: mysql_connect'; exit; }
if(!@mysql_select_db($this->databaza)) { @mysql_close($this->spojenie); echo 'Chyba :: mysql_select_db'; exit; }
} }
class select extends mysql {
var $sql; var $query; var $in; var $out;
function select($in) {
if(!is_numeric($this->in)) { echo 'Chyba :: ID'; exit; } $this->sql = "SELECT nazov FROM clanky WHERE id=" . $this->in;
$this->query = @mysql_query($this->sql, $this->spojenie); if(!$this->query) { echo 'ERR : mysql_query'; exit(); }
$this->out = mysql_result($this->query, 0, "nazov"); @mysql_free_result(); } } ?> index.phpKód: /* index.php*/ <?php require_once ("class.php");
$instancia = new mysql;
// echo $select->out;
mysql_close($instancia->spojenie); ?>
Prva trieda vola konstruktor spoji sa s mysql a prevedie nejake to overenie, ked je vsetko ok ... tak je vsetko ok.
Rozsirenie by malo zdedit vlastnosti triedy teda spojenie s mysql a vybrat s databazi polozku nazov podla id ktore do funkcie zavolame s index.php
Pre triedu mysql viem spravit instnaciu $instancia = new mysql; ale neviem akoby malo byt naspravnejsie spravit instanciu pre rozsirenie triedy mysql teda triedy new select(IN_ID) tak aby som pomol uz hocikde na index vytlacit vysledok s mysql_result teda hodnotu tej tabulky "nazov", ktoru som vybral v select pod ID...
Dakujem za akekolvek objasnenie tej tematiky
_________________ PC1: CPU: Intel Core i7 930 2.8GHz @ 4,0GHz + NOCTUA NH-D14 MB: GIGABYTE X58A-UD3R - X58 DDR: CORSAIR DDR3 3x2048MB 1600MHz GPU: ASUS EAH5870 DDR5 1GB HDD1: INTEL X25-M 80GB SSD SATA II HDD2: WESTERN DIGITAL Caviar Black 1000GB, SATA III PSU: SEASONIC X-750 Gold, 750W CASE: Lian Li PC-A70F B OS: Win 7 Pro 64bit Keyboard: Logitech G15 Mouse: Alienware TactX Maus Screen: Alienware OptX™ AW2310 ( 23" 1920 × 1080 ) 3D Full HD
PC2: CPU: AMD @ 2,2GHz ... |
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 | 181 Bydlisko: Nitra / Bra... |
nechapem presne co chces, elbo sa ponahlam na bus. ale sksual si v treide select spravit konstrkutkor, ktory bude osbahovat Kód: parent::__construct()
_________________ Sorry za prelkepy |
|
Registrovaný: 20.10.08 Prihlásený: 21.06.22 Príspevky: 2602 Témy: 31 | 31 Bydlisko: Bratislava |
viliam22 píše: Vsetko je tu verejne takze ked uz vytvorim instanciu mozem volat hocico a hocikde.
A preto sa nauc php 5, pretoze mat vsetky vlastnosti a metody verejne, nie je moc najstastnejsi programatorsky pristup.
_________________ Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB |
|
Registrovaný: 21.03.10 Prihlásený: 18.10.16 Príspevky: 60 Témy: 19 | 19 Bydlisko: BratislavA |
tak ako su vsetky funkcie a premennej v php verejne alebo primarne su suktormne? pretoze vydel som uz deklarovat premenne var $prem; a public $prem; a tak isto funkcie function() { } a public function() { }
_________________ PC1: CPU: Intel Core i7 930 2.8GHz @ 4,0GHz + NOCTUA NH-D14 MB: GIGABYTE X58A-UD3R - X58 DDR: CORSAIR DDR3 3x2048MB 1600MHz GPU: ASUS EAH5870 DDR5 1GB HDD1: INTEL X25-M 80GB SSD SATA II HDD2: WESTERN DIGITAL Caviar Black 1000GB, SATA III PSU: SEASONIC X-750 Gold, 750W CASE: Lian Li PC-A70F B OS: Win 7 Pro 64bit Keyboard: Logitech G15 Mouse: Alienware TactX Maus Screen: Alienware OptX™ AW2310 ( 23" 1920 × 1080 ) 3D Full HD
PC2: CPU: AMD @ 2,2GHz ... |
|
Registrovaný: 12.11.08 Prihlásený: 16.05.24 Príspevky: 125 Témy: 30 | 30 |
zdravim,
tak som tu znova, uz mam to PHP trochu lepsie zmaknute ako pri zakladani temy a vzhladom na to co hovorite, aj tak by som sa to OOP chcel v PHP naucit. teoriu OOP relativne ovladam, viem co je clenska premenna, metoda, dedicnost, polymorfizmus, getter, setter, konstruktor, destruktor, poznam typy metod a viem to vsetko pouzivat. snazil som sa vygooglit nejake priklady, ale vzdy to boli priklady typu zamestanci, auto, macka, pes, vypocet roznych udajov o geometrickych telesach.... tymto veciam vsetkym chapem, viem co ten kod robi, ked sa nanho pozriem, stale ma ale nenapada, ako by som toto vsetko mohol vyuzit pri tvorbe web stranok, napriklad pri nejakom login scripte a pod.
bol by tu niekto ochotny mi to vysvetlit alebo poslat odkaz na nejaky schopnejsi tutorial pripadne uploadnut nejaku jednoduchu web stranku alebo zopar scriptov, kde by som to mohol pochopit?
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 | 66 Bydlisko: Žilina |
čokoľvek je objektom, kľudne aj gombík pre prihlásenie... najočividnejšími objektami sú ale pravdepodobne samotné položky v databáze. Každý riadok je objekt.
_________________ C#, PHP, ... |
|
Registrovaný: 26.11.06 Prihlásený: 09.10.24 Príspevky: 4118 Témy: 319 | 319 Bydlisko: HE/BA |
Tiež som presne s týmto mal dlho problém, potom mi akosi doplo, ale nie som si istý či dobre. Ja tomu rozumiem takto:
Máš v databáze napríklad uložené články. Vytvoríš si triedu pre článok a táto trieda bude mať členov ako nadpis, autor, text, dátum pridania. Metódy potom bude mať Pridaj článok, Vypíš článok, Uprav článok, Odstráň článok, Vypíš krátku verziu článku.
Pri výpise článku si vyberieš údaje z databázy o tomto článku, vytvoríš nový objekt - článok a nastavíš mu vlastnosti. Potom naň zavoláš metódu vypíš článok.
Pri výpise zoznamu článkov môžeš zavolať metódu "Vypíš krátku verziu článku", ktorá najprv zmení vlastnosť text tým, že ju oreže na 100 slov a zavolá metódu "Vypíš článok". A to všetko zopakuješ pre prvých 10 záznamov v databáze.
Keď budeš upravovať, tak si na editovacej stránke vyberieš článok, vytvoríš objekt a formulár naplníš vlastnosťami tohto objektu. Po odoslaní formuláru nastavíš nové vlastnosti článku a zavoláš metódu "Uprav článok" ktorá môže overiť hodnoty, či sú také ako majú byť, ošetrí vstupy a zapíše do databázy.
Ale ako píšem, tiež som mal tento problém a nie som si stále istý či som to dobre pochopil, keďže na internete som nikde tento postup nevidel ale ani nič iné. Bol by som rád, keby to niekto potvrdil alebo vyvrátil.
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 | 66 Bydlisko: Žilina |
Flety, v podstate... Celá podstata OOP je založená na tých pár znakoch z poučky - znovupoužiteľnosť, zapuzdrovanie, dedičnosť, polymorfizmus...
Celé je to o tom nepozerať na program ako na sled príkazov, ale ako na interakciu medzi objektami. Keď si vezmeš povedzme klasický procedurálny prístup a vyberáš povedzme články z databázy, berieš každý riadok ako nejaký set údajov, ktoré podľa potreby vypíšeš. Pri OOP sa pozeráš na každý riadok ako na samostatný objekt - užívateľ, článok, položka v eshope.., ktorá má nejaké vlastnosti a prípadne metódy (pri užívateľovi povedzme vieme určiť, čo môže na stránke vykonávať).
Samozrejme sa OOP neorientuje len na databázu, ale tam je to myslím pri webstránkach najviac očividné a najjednoduchšie pochopiť.
_________________ C#, PHP, ... |
|
Registrovaný: 12.11.08 Prihlásený: 16.05.24 Príspevky: 125 Témy: 30 | 30 |
takze nejak takto? vytvorim si napriklad class user a donho pisem metody ako login, autorizaciu, logout a pod?
Kód: <?PHP $sessid = $_SESSION['id'];
class user { private $id, $firstname, $surname, $email, $password, $address, $rights, $msg_discount, $msg_newproduct; /*gettery*/ function getID() { return $this->id; } //... function getMsg_Newproduct() { return $this->msg_newproduct; } /*settery*/ function setID($userID) { $this->id = $userID; } //... function setMsg_Newproduct($usermsgnewproduct) { $this->msg_newproduct = $usermsgnewproduct; } /*metody*/ public function auth($sessid) { if ($sessid) { $authquery = sprintf("SELECT * FROM users WHERE id='%s'", mysql_real_escape_string($sessid)); $auth = MySQL_Query($authquery); if (!$auth) { return 0; } $auth = mysql_fetch_object($auth); if ($auth) { setID($auth->id); setFirstname($auth->firstname); //..... setMsg_Newproduct($this->msg_newproduct); return 1; } else { return 0; } } else { return 0; } } public function login($email, $password) { if ($email != "" AND $password != "") { $loginquery = sprintf("SELECT id FROM users WHERE email='%s' AND password='%s'", mysql_real_escape_string($email), md5($password));
$login = MySQL_Query($loginquery); if (!$login) { return 0; } $login = mysql_fetch_object($login); if ($login) { session_start(); $_SESSION['id'] = $login->id; auth($login->id); } else { return 0; } } else { return 0; } } }
?>
|
|
Stránka: 2 z 2
| [ Príspevkov: 59 ] | 1, 2 |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v PHP, ASP | 25 | 1113 | 04.01.2010 15:37 Tominator | | v Ostatné programy | 5 | 888 | 12.12.2010 0:04 playmaker | | v Grafické programy | 4 | 475 | 26.08.2011 10:59 nickairsoft | | v PHP, ASP | 7 | 715 | 03.01.2010 12:49 stenley | | v Predám | 13 | 1387 | 25.11.2019 10:20 $ph!nX | | v PHP, ASP | 2 | 535 | 24.08.2009 10:15 tomast7 | | v Assembler, C, C++, Pascal, Java | 10 | 2427 | 26.03.2018 0:40 Miso122 | | v Ponuka práce | 0 | 1354 | 02.05.2011 12:08 magicmedia | | v PHP, ASP | 4 | 1477 | 07.05.2010 14:02 DeiForm | | v PHP, ASP | 8 | 866 | 18.03.2011 19:21 camo | | v PHP, ASP | 4 | 652 | 20.06.2009 12:44 KViki | | v PHP, ASP | 4 | 2568 | 20.05.2022 13:51 JanoF | | v PHP, ASP | 1 | 2866 | 09.06.2005 22:39 johny128 | | v PHP, ASP | 1 | 768 | 31.05.2007 16:24 kmsa | | v PHP, ASP | 2 | 493 | 08.04.2016 20:44 5had0w | | v PHP, ASP | 18 | 1241 | 01.01.2009 19:22 rooobertek |
|