Temat wykladu:
PHP: OOP w PHP — czy warto pisać własne CMS-y? (by Michu, 2007-10-18) @ wyklady.net
Komentarze: http://forum.wyklady.net/index.php?topic=120.0
20:28MichuWitam wszystkich na wykladzie
20:28MichuPostaram porówać własne cms'y pisane w OOP
20:28Michuz gotowymi
20:29MichuPierw chciałbym zacząć od własnych pisanych w OOP
20:30Michuwięc zazda klasa powinna wygladać tak
20:30MichuClass Demo{
20:30Michu/tu tesrc
20:30Michu}
20:30Michuw środku piszemy funkcje
20:31Michunp.
20:31Michufunction test {
20:31Michuprint ("test");
20:31Michu}
20:32Michubardzo ciekawym rozwiazaniem jest
20:32Michufunkcja
20:32Michu__construct()
20:32Michuktóra jest wywoływana przy pworzenu klasy
20:32Michuteraz aby wywołać funkce piszemy
20:33Michu$Demo = new Demo();
20:33Michu$Demo->test();
20:34Michuodwrotnoscią funkcji __construct() jest _destruct()
20:34Michujest to funkca która jest wywoływana przy konczeniu klasy
20:34Michumażna ją zastosować do zamykania ftp
20:35Michulub połączenia z mysql'em
20:35Michuczy są jakieś pytania
20:35Michuczy mode przejsć dalej
20:36Michuwięc kolejną funkcą może być przydatana
20:36Michuto funkca
20:36Michu__autoload
20:36Michuktóra ładuje klase
20:36Michunp.
20:36Michu--code--
20:37Michufunction __autoload($klasa){
20:37Michurequire_once("class.{$klasa}.php");
20:37Michu}
20:38Michulecz przy projektowaniu cmsu który bedze ożystał
20:38Michuz mysql'a lub z pliów
20:38Michupotrzebne bedze by klasy zwracały dane
20:38Michurobimy to przez return
20:38Michunp.
20:39Michuclass test {
20:39Michufunction dane($dane) {
20:39Michureturn $dane;
20:39Michu}
20:39Michu}
20:40Michupo wywołaniu funkcji dane(
20:40Michu)
20:40Michumożemy zapisać jej wynik do jakiegoś pliku ub do tablicy
20:41Michuczęsto potrzebujemy urzyć funkcji kilka razy
20:41Michulecz ze zmienionymi np. danymi
20:41Michuwtedy bardzo pomocne
20:41Michuokazuje się dziedziczenie
20:42Michuparent::tu nazwa funkcji();
20:42Michuw ten sposób przekazujemy kod funkcji a do funkcji b
20:43Michuto na temat podstaw OOP to by było tyle czy są jakieś pytania
20:44Michuto tereaz o gotowych rozwiązanich
20:44Michuchciałbym zająć się PHP-fusion
20:45Michujest to gotowy cms który znajduje zastosowanie na wielu stronach
20:46MichuJednak by dopasować go do naszych potrzeb trzeba urzyć szablonów
20:46Michujest bardzo wiele gotowych ale je chce opisać jak stworzyć własy
20:46MichuSzablony są umieszczane w pliku themes
20:46Michugdzie każdy szablon ma swój folder
20:46Michui tam sie znajduje
20:47Michuszablony mają przynajmiej 3 pliki
20:47Michuindex.php
20:47Michutheme.php
20:47Michustyles.css
20:47Michuplik index.php
20:47Michujest pusty (zazwyczaj) i uniemożliwia on przeglad folderu
20:47Michuz thememi
20:48Michuplik theme.php zawiera funkcje odpowiedzialne za poprawny wyglad strony
20:48Michua styles.css zawiera artusz stylow
20:48Michuna początku każdego szablonu
20:49Michumusi się znajdować
20:49Michu5 zmiennych
20:49Michu$body_text
20:49Michuustawia kolor tekstu na stronie
20:49Michu$body_bg
20:49Michuustawia kolor tla
20:50Michu$theme_width, $theme_width_l, $theme_width_r
20:50Michusa odpowiedzialane za:
20:50Michu1 szerokość naszer strony
20:50Michu2
20:50Michuodpowidza za margines lewy
20:51Michu3 za margines prawy
20:51Michuza wyswietlanie nagluwka w php-fusion
20:51Michuodpowiedzialna jest funkcja render_header
20:52Michunagłuwek tai podstawowy powinien wygladać tak
20:52Michuunction render_header($header_content) {
20:52Michuglobal $theme_width,$settings;
20:52Michuecho "<table style='background: #00AD00;' align='center' border='0' cellpadding='0' cellspacing='0' width='$theme_width'><tr>";
20:52Cimoszewiczchyba
20:52Cimoszewiczprzepraszam
20:52Michuwiem function
20:53Michu/ Sekcja bannera wyświetlanegow logu
20:53Michuecho "<td width='100%' height='82'>$header_content</td>";
20:53Michu/ koniec sekcji bannera
20:53Michuecho "</tr></table>\n";
20:53Michuecho "<table align='center' border='0' cellpadding='0' cellspacing='0' width='$theme_width'><tr>";
20:53Michuecho "<td width='75%' height='29' style='background: #FF0000;'>";
20:53Michuecho showsublinks("&amp;","white")."</td>"; //Sekcja wyświetlająca linki górnego menu
20:53Michuecho "<td align='right' width='25%' height='29' style='background: #0000FF;'>";
20:53Michuecho showsubdate()."</td>"; //wyświetlanie aktualnej daty i czasu
20:53Michuecho "</tr></table>";
20:53Michuecho "<table align='center' cellspacing='0' cellpadding='0' width='$theme_width'>\n<tr>\n";
20:53Michu}
20:54Michupojawiły sie tu 2 funkcjie
20:54Michushowsublinks() i showsubdate()
20:54Michu1 odpowiedzialan jest za wyswietlanie górnego menu strony
20:55Michua 2 za aktualna godzie i czas
20:55Michustopka strony znajduje się w funckji render_footer
20:55Michuteraz podam przykłądowy kod tekiej stopki
20:56Michufunction render_footer($license=false) {
20:56Michuglobal $theme_width,$locale,$settings;
20:56Michuecho "</tr>\n</table>\n";
20:56Michuecho "<table align='center' width='$theme_width' cellspacing='0' cellpadding='0'><tr>"; //Stopka naszej strony ustawiana w panelu administracyjnym
20:56Michuecho "<td >".stripslashes($settings['footer'])."</td>\n";
20:56Michuif ($license == false) {
20:56Michuecho "<td align='right'>Powered by <a href='http://www.php-fusion.co.uk' target='_blank'>PHP-Fusion</a> &copy; 2003-2006</td>\n";
20:56eromai($license == false) {
20:56Michu} //Fragment wyświetlający stopkę programistów php-fusiuon, fragmentu tego nie wolno usuwać
20:56Michuecho "</tr></table>";
20:57Michu}
20:57Michuten kod nie jest az tak skomplikowany jk poprzedni
20:57Michubo zawiera nie wiele rzeczy
20:58Michutu się zapytam czy wszystko jest zrozumiałem
20:59Michuto jezeli tak to przejdzmy do wyswietlania newsow i artykukulow
20:59Michuza newsy jest odpowiedzialna funkcja render_news
21:00Michuprzykladowy kod :
21:00Michufunction render_news($subject, $news, $info) {
21:00Michuglobal $locale;
21:00Michuecho "<table width='100%' cellpadding='0' cellspacing='0'><tr>";
21:00Michuecho "<td>$subject</td>"; //kod odpowiedzialny za wyświetlanie tematu wiadomości
21:00Michuecho "</tr></table>";
21:00Michuecho "<table width='100%' cellpadding='0' cellspacing='0'><tr>";
21:00Michuecho "<td><div style='width:100%;vertical-align:top;'>$news</div><br>"; //Treść naszego newsa
21:00Michuecho "<div style='margin-top:5px'>";
21:00Michuecho "<table width='100%' cellpadding='0' cellspacing='0'><tr>";
21:00Michuecho "<td>".newsposter($info)."</td>";
21:00Michuecho "<td align='right'>";
21:01Michuecho openform("N",$info['news_id']).newsopts($info,"&middot;").closeform("N",$info['news_id']);
21:01Michuecho "</td></tr></table></div></td>";
21:01Michuecho "</tr></table>\n";
21:01Michu}
21:01Michu$subject
21:01Michujest to temat newsu
21:01Michu$news to tresc newsa
21:01Michua $info
21:02Michuto dodatkowe informacje
21:02Michutakie jak autor
21:02Michuitp
21:02MaKhi all ;]
21:02Michutereaz wyswietlanie artykulow
21:02Michusłuży do tego Render_article
21:03Michujest bardzo podobny do news
21:03Michutyle ze zamiast $news jest $article
21:04Michutu chyba nie musze pisać kodu
21:04Michubo chyba każdy potrafi go zmodyfikować
21:04Michuarkusz css
21:04Michujest dość prosty do wykonania
21:04Michuwystarczy napisać np
21:05Michubody {
21:05Michufont-family:Verdana; }
21:05Michui juz mamy proste zmiany
21:06Michupozostałe bloki które powinny się tam znaslećś to
21:06Michua:link, a:visited, a:active i a:hover
21:06Michumam nadzieje iż wszystko dobrze opisałem
21:07Michuteraz po opisaniu po trochu OOP i dgotowych cms'ow
21:07Michuto chvicąłbym prześć do rozważania które jest tematem wykładu
21:08Michuco lepsze gotowe czy własne cms'y
21:08Michuczyba, że są jakieś niejasności
21:08deshixkodowanie twe to zuo
21:09Michua mogłbyś dokładniej napisać ostatnie słowo
21:09Michuchyba iż ja nie wim co to znaczy
21:09Michuchyba iż chodzi ci czy to źródło
21:10lidiaMichu: mozesz mowic dalej
21:10Michuok
21:10Michuja osobiście
21:10Michuuważam iż własne cms'y
21:11Michusą lepsze dla osób które znają już się na php
21:11Michulecz nie wykreślał bym tych słabszych
21:11Michudobra
21:11Michugdysz kazdy powinien probowac
21:11Michubo gotowe cms'y sa dobe lecz zabijaja wyobraznie programisty
21:12Michumozna sie na nich wzorowac
21:12Michulecz nie tworzyc na nich strony i sie cieszyc jak by sie googe napisalo
21:12Michubo czesto sie spotykam z takimi osobami
21:12Michuktore zaczynaja swoja przygode z tworzeniem stron
21:13Michui tworza na cms'ach (gotowych)
21:13Michui to ich nie motywuje do dalszej
21:13Michuedukacji
21:13Michubo sadza iz maja wszystko
21:13Michustrona 2x lepsza niz po 1 roku nauki
21:14Michui 0 niedogodnosci
21:14Michua jakie jest zdanie pozwole zapytac?
21:15Michuwasze
21:15Afro_PLhum
21:15Afro_PLna pewno pisanie wlasnych wzbogaca
21:15Afro_PLw kazdym sensie
21:16Michua własnie przypomialem sobie
21:16Afro_PLhm?
21:16Michucos dla poczatkujacych
21:16Michuhttp://wellstyled.com/tools/colorscheme/index-en.html
21:16Michustrona z doborem kolorów
21:16mik01ajja zawsze sam wszystko pisalem ^^
21:16mik01aji stad w ogole cos umiem
21:17Michuja tez wszystko od podstaw brzytkie bo brzydkie ale moje
21:17mik01aja z gotowymi jakos nigdy nie moglem sobie poradzic
21:17Michuhttp://www.cssbeauty.com/
21:17mTTja natomiast mysle, ze w polskim jest "gdyz" a nie "gdysz" i od pisania w polskim nalezaloby zaczac
21:17Michustrona z stronami na ktorych moza sie wzorowac
21:17eromaibazowanie na czichs kodach poczesci rozwija
21:18eromaizmusza do czytania analizy to tez pomaga w nauce
21:18Michupo czesi ale nie uczy kiedy tulko zainstalujemy
21:18Michui mysqlimy ze jestesmy kims
21:18Michuhttp://www.csszengarden.com/
21:18Michukolejna stronka z stronami na ktorych mozna sie wzorowac
21:19eromaino to jest inna spawa gdy ktos nic nie umie a sie chelpi czimis skryptami
21:19Michutak analiza
21:19Michuto dobra
21:19Michurzecz tak sie poznaje informatykow
21:19Michuten kto dobry to szybko pojmnie kod
21:20Michuteraz ostatnio na stronach zrbila sie moda na GD
21:21Michuhttp://forum.php.pl/php_Biblioteka_do_obslugi_zdjec_t79014.html
21:21Michutu zamieszczona jest biblioteka
21:21Michuo GD dla osob ktore nie zabardzo sa w tym temacie
21:22Michua co do analizy kodow
21:22Michuto zawsze mnie najciekawsze wydawaly sie fora do analizowania
21:23Michuczesto widac wypowiedzi
21:23Michuiz gotowe cms'y sa lepsze bo mozesz przeanalizowac kod 100 razy
21:23Michua i tak bedze luka
21:23Michuta gotowce sa juz sprawdzone
21:24Michujednak czlowiek na bledach sie uczy
21:24eromai;]
21:24Michui nie mozna z takim zdaniem w zyc caly czas
21:24Michuwiec najepiej nic nie robmy
21:24Michubo mozna blad popelnic
21:24mik01aja poza tym wlasne cmsy i skrypty sa bezpieczniejsze dlatego, ze nikt tak naprawde nie wie, w jaki sposob dzialaja ;>
21:25Michunie uruchamiajmy pc nie podlewajmy kwiatkow
21:25Michuprawda nikt nie dostepu do zrodla
21:25Michuale teraz najgorsze sa SQL indection bo coraz wiecej sie o tym mowi a ludze itak
21:26Michuto lekcewarza
21:26Michua inni wykorzystuja
21:26Michua jezeli boimy sie o nasz cms
21:26Michuto polecem stworzenie systemu logow
21:26Michuze zapisoja cala aktywnosc zapytania ipt
21:27Michulecz przy duzej odwiedzalnosci bede one wiele zajmowaly
21:28Michuwiele mozna sie nauczyc z gotowcow
21:28Michutypu podejscie do kodu
21:28Michui do buforowania
21:28Michui do skladni ogolnie
21:29Michucoraz wieksza popularnosc zdbywaja strony gdzie mozna sprawdzic czy dany pc jest wlaczony np
21:29Michua jest to bardzo proste
21:29Michuwystarczy funkcja
21:29Michusystem();
21:29Michuwww.php.net/system
21:29Michukomenda ping
21:29Michui mamy
21:29Michupodobnie skanowanie portów
21:30Michui te antywirosy online
21:30Michuto nie jest takie stasze
21:30Michua jak to jest z PEAR
21:30Michu?
21:31Michuniby takie piekne mialo byc
21:31Michua co jest
21:31Michudziala tylko z php 4
21:31Michupaczki które zawiele nie potrafia
21:32MichuCzy kos moze z osob tu zgromadzonych rbil projekty
21:32Michuna wiecej niz 2 osoby
21:32Michu?
21:32Michubo nie wem czy pisać o ULM
21:33Michujezeli nie
21:33Michuto tylko czy sa jakies pytanie
21:33Michua
21:33Michu?
21:34Michujezeli nie
21:34eromaico to ULM ?? :P
21:34earthja nie robię, ale chętnie dowiedziałbym się czegoś o ULM
21:34Michujuz
21:34CimoszewiczUbogie Logiczne Myslenie
21:34Cimoszewiczzart :P
21:34MichuUnified Modeling Language
21:35Michujezeli nad projektem
21:35Michupracuje wiecej niz 1 osoba
21:35Michuto musza sie ze soba jakoć komunikować
21:35Michumona by zpisać wszystkie funkcje
21:35Michuna krtkach
21:35Michui tak by się zgromadził ich tysiace
21:36Michuwiec Powstal UML
21:36Michuschematycznie pokazane funkcje
21:36Michuby 2 programisa mogl je odczytac
21:36eromaiczyli taki pseudo kod ??
21:36Michutaki grafik
21:36eromaiacha
21:36Michugdzie sa przedstawione
21:36Michufunkce
21:37Michui do czego sie odwoluja
21:37Michutaki schematychnie
21:37Michupokazane
21:37Michuale to nie wyklad o UML
21:37Michuwiec jezeli ten dobrze wypadl
21:37Michuto zrobie kolejny
21:38Michui na konec apel do wszystkich
21:38Michunie zyjmy w przeswiadczenu ze
21:38Michumozemy cos zepsuc i lepiej miec gotowca
21:38Michubo tak mysqlc najlepiej nie oddychajmy bo cos zepsujemy
21:39Michuten wyklad zrobilem by odwdzieczyc
21:39Michusie osoba ktorych wczesniej sluchalem wykladow
21:39Michui ludzia ktorzy robia linuxa bo bez nich bym mial samego pc bez systemu
21:40Michudobrze ze sa ludzie ktorzy mysql o innych
21:40Michużegnam wszystkich
21:40navmysql o innych? :F
21:40Michumysla
21:40Michublad
21:40Cimoszewiczalbo juz takie zboczenie :P
21:40Michumam nadzieje iz wyklad sie podobal
21:40Cimoszewiczzawodowe ;]
21:40Michuno
21:40Michu:D
21:41Michuwyklad zakonczony
21:41navmi sie nie podobalo to co zdazylem zobaczyc :>