| | 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:28 | Michu | Witam wszystkich na wykladzie |
20:28 | Michu | Postaram porówać własne cms'y pisane w OOP |
20:28 | Michu | z gotowymi |
20:29 | Michu | Pierw chciałbym zacząć od własnych pisanych w OOP |
20:30 | Michu | więc zazda klasa powinna wygladać tak |
20:30 | Michu | Class Demo{ |
20:30 | Michu | /tu tesrc |
20:30 | Michu | } |
20:30 | Michu | w środku piszemy funkcje |
20:31 | Michu | np. |
20:31 | Michu | function test { |
20:31 | Michu | print ("test"); |
20:31 | Michu | } |
20:32 | Michu | bardzo ciekawym rozwiazaniem jest |
20:32 | Michu | funkcja |
20:32 | Michu | __construct() |
20:32 | Michu | która jest wywoływana przy pworzenu klasy |
20:32 | Michu | teraz aby wywołać funkce piszemy |
20:33 | Michu | $Demo = new Demo(); |
20:33 | Michu | $Demo->test(); |
20:34 | Michu | odwrotnoscią funkcji __construct() jest _destruct() |
20:34 | Michu | jest to funkca która jest wywoływana przy konczeniu klasy |
20:34 | Michu | mażna ją zastosować do zamykania ftp |
20:35 | Michu | lub połączenia z mysql'em |
20:35 | Michu | czy są jakieś pytania |
20:35 | Michu | czy mode przejsć dalej |
20:36 | Michu | więc kolejną funkcą może być przydatana |
20:36 | Michu | to funkca |
20:36 | Michu | __autoload |
20:36 | Michu | która ładuje klase |
20:36 | Michu | np. |
20:36 | Michu | --code-- |
20:37 | Michu | function __autoload($klasa){ |
20:37 | Michu | require_once("class.{$klasa}.php"); |
20:37 | Michu | } |
20:38 | Michu | lecz przy projektowaniu cmsu który bedze ożystał |
20:38 | Michu | z mysql'a lub z pliów |
20:38 | Michu | potrzebne bedze by klasy zwracały dane |
20:38 | Michu | robimy to przez return |
20:38 | Michu | np. |
20:39 | Michu | class test { |
20:39 | Michu | function dane($dane) { |
20:39 | Michu | return $dane; |
20:39 | Michu | } |
20:39 | Michu | } |
20:40 | Michu | po wywołaniu funkcji dane( |
20:40 | Michu | ) |
20:40 | Michu | możemy zapisać jej wynik do jakiegoś pliku ub do tablicy |
20:41 | Michu | często potrzebujemy urzyć funkcji kilka razy |
20:41 | Michu | lecz ze zmienionymi np. danymi |
20:41 | Michu | wtedy bardzo pomocne |
20:41 | Michu | okazuje się dziedziczenie |
20:42 | Michu | parent::tu nazwa funkcji(); |
20:42 | Michu | w ten sposób przekazujemy kod funkcji a do funkcji b |
20:43 | Michu | to na temat podstaw OOP to by było tyle czy są jakieś pytania |
20:44 | Michu | to tereaz o gotowych rozwiązanich |
20:44 | Michu | chciałbym zająć się PHP-fusion |
20:45 | Michu | jest to gotowy cms który znajduje zastosowanie na wielu stronach |
20:46 | Michu | Jednak by dopasować go do naszych potrzeb trzeba urzyć szablonów |
20:46 | Michu | jest bardzo wiele gotowych ale je chce opisać jak stworzyć własy |
20:46 | Michu | Szablony są umieszczane w pliku themes |
20:46 | Michu | gdzie każdy szablon ma swój folder |
20:46 | Michu | i tam sie znajduje |
20:47 | Michu | szablony mają przynajmiej 3 pliki |
20:47 | Michu | index.php |
20:47 | Michu | theme.php |
20:47 | Michu | styles.css |
20:47 | Michu | plik index.php |
20:47 | Michu | jest pusty (zazwyczaj) i uniemożliwia on przeglad folderu |
20:47 | Michu | z thememi |
20:48 | Michu | plik theme.php zawiera funkcje odpowiedzialne za poprawny wyglad strony |
20:48 | Michu | a styles.css zawiera artusz stylow |
20:48 | Michu | na początku każdego szablonu |
20:49 | Michu | musi się znajdować |
20:49 | Michu | 5 zmiennych |
20:49 | Michu | $body_text |
20:49 | Michu | ustawia kolor tekstu na stronie |
20:49 | Michu | $body_bg |
20:49 | Michu | ustawia kolor tla |
20:50 | Michu | $theme_width, $theme_width_l, $theme_width_r |
20:50 | Michu | sa odpowiedzialane za: |
20:50 | Michu | 1 szerokość naszer strony |
20:50 | Michu | 2 |
20:50 | Michu | odpowidza za margines lewy |
20:51 | Michu | 3 za margines prawy |
20:51 | Michu | za wyswietlanie nagluwka w php-fusion |
20:51 | Michu | odpowiedzialna jest funkcja render_header |
20:52 | Michu | nagłuwek tai podstawowy powinien wygladać tak |
20:52 | Michu | unction render_header($header_content) { |
20:52 | Michu | global $theme_width,$settings; |
20:52 | Michu | echo "<table style='background: #00AD00;' align='center' border='0' cellpadding='0' cellspacing='0' width='$theme_width'><tr>"; |
20:52 | Cimoszewicz | chyba |
20:52 | Cimoszewicz | przepraszam |
20:52 | Michu | wiem function |
20:53 | Michu | / Sekcja bannera wyświetlanegow logu |
20:53 | Michu | echo "<td width='100%' height='82'>$header_content</td>"; |
20:53 | Michu | / koniec sekcji bannera |
20:53 | Michu | echo "</tr></table>\n"; |
20:53 | Michu | echo "<table align='center' border='0' cellpadding='0' cellspacing='0' width='$theme_width'><tr>"; |
20:53 | Michu | echo "<td width='75%' height='29' style='background: #FF0000;'>"; |
20:53 | Michu | echo showsublinks("&","white")."</td>"; //Sekcja wyświetlająca linki górnego menu |
20:53 | Michu | echo "<td align='right' width='25%' height='29' style='background: #0000FF;'>"; |
20:53 | Michu | echo showsubdate()."</td>"; //wyświetlanie aktualnej daty i czasu |
20:53 | Michu | echo "</tr></table>"; |
20:53 | Michu | echo "<table align='center' cellspacing='0' cellpadding='0' width='$theme_width'>\n<tr>\n"; |
20:53 | Michu | } |
20:54 | Michu | pojawiły sie tu 2 funkcjie |
20:54 | Michu | showsublinks() i showsubdate() |
20:54 | Michu | 1 odpowiedzialan jest za wyswietlanie górnego menu strony |
20:55 | Michu | a 2 za aktualna godzie i czas |
20:55 | Michu | stopka strony znajduje się w funckji render_footer |
20:55 | Michu | teraz podam przykłądowy kod tekiej stopki |
20:56 | Michu | function render_footer($license=false) { |
20:56 | Michu | global $theme_width,$locale,$settings; |
20:56 | Michu | echo "</tr>\n</table>\n"; |
20:56 | Michu | echo "<table align='center' width='$theme_width' cellspacing='0' cellpadding='0'><tr>"; //Stopka naszej strony ustawiana w panelu administracyjnym |
20:56 | Michu | echo "<td >".stripslashes($settings['footer'])."</td>\n"; |
20:56 | Michu | if ($license == false) { |
20:56 | Michu | echo "<td align='right'>Powered by <a href='http://www.php-fusion.co.uk' target='_blank'>PHP-Fusion</a> © 2003-2006</td>\n"; |
20:56 | eromai | ($license == false) { |
20:56 | Michu | } //Fragment wyświetlający stopkę programistów php-fusiuon, fragmentu tego nie wolno usuwać |
20:56 | Michu | echo "</tr></table>"; |
20:57 | Michu | } |
20:57 | Michu | ten kod nie jest az tak skomplikowany jk poprzedni |
20:57 | Michu | bo zawiera nie wiele rzeczy |
20:58 | Michu | tu się zapytam czy wszystko jest zrozumiałem |
20:59 | Michu | to jezeli tak to przejdzmy do wyswietlania newsow i artykukulow |
20:59 | Michu | za newsy jest odpowiedzialna funkcja render_news |
21:00 | Michu | przykladowy kod : |
21:00 | Michu | function render_news($subject, $news, $info) { |
21:00 | Michu | global $locale; |
21:00 | Michu | echo "<table width='100%' cellpadding='0' cellspacing='0'><tr>"; |
21:00 | Michu | echo "<td>$subject</td>"; //kod odpowiedzialny za wyświetlanie tematu wiadomości |
21:00 | Michu | echo "</tr></table>"; |
21:00 | Michu | echo "<table width='100%' cellpadding='0' cellspacing='0'><tr>"; |
21:00 | Michu | echo "<td><div style='width:100%;vertical-align:top;'>$news</div><br>"; //Treść naszego newsa |
21:00 | Michu | echo "<div style='margin-top:5px'>"; |
21:00 | Michu | echo "<table width='100%' cellpadding='0' cellspacing='0'><tr>"; |
21:00 | Michu | echo "<td>".newsposter($info)."</td>"; |
21:00 | Michu | echo "<td align='right'>"; |
21:01 | Michu | echo openform("N",$info['news_id']).newsopts($info,"·").closeform("N",$info['news_id']); |
21:01 | Michu | echo "</td></tr></table></div></td>"; |
21:01 | Michu | echo "</tr></table>\n"; |
21:01 | Michu | } |
21:01 | Michu | $subject |
21:01 | Michu | jest to temat newsu |
21:01 | Michu | $news to tresc newsa |
21:01 | Michu | a $info |
21:02 | Michu | to dodatkowe informacje |
21:02 | Michu | takie jak autor |
21:02 | Michu | itp |
21:02 | MaK | hi all ;] |
21:02 | Michu | tereaz wyswietlanie artykulow |
21:02 | Michu | służy do tego Render_article |
21:03 | Michu | jest bardzo podobny do news |
21:03 | Michu | tyle ze zamiast $news jest $article |
21:04 | Michu | tu chyba nie musze pisać kodu |
21:04 | Michu | bo chyba każdy potrafi go zmodyfikować |
21:04 | Michu | arkusz css |
21:04 | Michu | jest dość prosty do wykonania |
21:04 | Michu | wystarczy napisać np |
21:05 | Michu | body { |
21:05 | Michu | font-family:Verdana; } |
21:05 | Michu | i juz mamy proste zmiany |
21:06 | Michu | pozostałe bloki które powinny się tam znaslećś to |
21:06 | Michu | a:link, a:visited, a:active i a:hover |
21:06 | Michu | mam nadzieje iż wszystko dobrze opisałem |
21:07 | Michu | teraz po opisaniu po trochu OOP i dgotowych cms'ow |
21:07 | Michu | to chvicąłbym prześć do rozważania które jest tematem wykładu |
21:08 | Michu | co lepsze gotowe czy własne cms'y |
21:08 | Michu | czyba, że są jakieś niejasności |
21:08 | deshix | kodowanie twe to zuo |
21:09 | Michu | a mogłbyś dokładniej napisać ostatnie słowo |
21:09 | Michu | chyba iż ja nie wim co to znaczy |
21:09 | Michu | chyba iż chodzi ci czy to źródło |
21:10 | lidia | Michu: mozesz mowic dalej |
21:10 | Michu | ok |
21:10 | Michu | ja osobiście |
21:10 | Michu | uważam iż własne cms'y |
21:11 | Michu | są lepsze dla osób które znają już się na php |
21:11 | Michu | lecz nie wykreślał bym tych słabszych |
21:11 | Michu | dobra |
21:11 | Michu | gdysz kazdy powinien probowac |
21:11 | Michu | bo gotowe cms'y sa dobe lecz zabijaja wyobraznie programisty |
21:12 | Michu | mozna sie na nich wzorowac |
21:12 | Michu | lecz nie tworzyc na nich strony i sie cieszyc jak by sie googe napisalo |
21:12 | Michu | bo czesto sie spotykam z takimi osobami |
21:12 | Michu | ktore zaczynaja swoja przygode z tworzeniem stron |
21:13 | Michu | i tworza na cms'ach (gotowych) |
21:13 | Michu | i to ich nie motywuje do dalszej |
21:13 | Michu | edukacji |
21:13 | Michu | bo sadza iz maja wszystko |
21:13 | Michu | strona 2x lepsza niz po 1 roku nauki |
21:14 | Michu | i 0 niedogodnosci |
21:14 | Michu | a jakie jest zdanie pozwole zapytac? |
21:15 | Michu | wasze |
21:15 | Afro_PL | hum |
21:15 | Afro_PL | na pewno pisanie wlasnych wzbogaca |
21:15 | Afro_PL | w kazdym sensie |
21:16 | Michu | a własnie przypomialem sobie |
21:16 | Afro_PL | hm? |
21:16 | Michu | cos dla poczatkujacych |
21:16 | Michu | http://wellstyled.com/tools/colorscheme/index-en.html |
21:16 | Michu | strona z doborem kolorów |
21:16 | mik01aj | ja zawsze sam wszystko pisalem ^^ |
21:16 | mik01aj | i stad w ogole cos umiem |
21:17 | Michu | ja tez wszystko od podstaw brzytkie bo brzydkie ale moje |
21:17 | mik01aj | a z gotowymi jakos nigdy nie moglem sobie poradzic |
21:17 | Michu | http://www.cssbeauty.com/ |
21:17 | mTT | ja natomiast mysle, ze w polskim jest "gdyz" a nie "gdysz" i od pisania w polskim nalezaloby zaczac |
21:17 | Michu | strona z stronami na ktorych moza sie wzorowac |
21:17 | eromai | bazowanie na czichs kodach poczesci rozwija |
21:18 | eromai | zmusza do czytania analizy to tez pomaga w nauce |
21:18 | Michu | po czesi ale nie uczy kiedy tulko zainstalujemy |
21:18 | Michu | i mysqlimy ze jestesmy kims |
21:18 | Michu | http://www.csszengarden.com/ |
21:18 | Michu | kolejna stronka z stronami na ktorych mozna sie wzorowac |
21:19 | eromai | no to jest inna spawa gdy ktos nic nie umie a sie chelpi czimis skryptami |
21:19 | Michu | tak analiza |
21:19 | Michu | to dobra |
21:19 | Michu | rzecz tak sie poznaje informatykow |
21:19 | Michu | ten kto dobry to szybko pojmnie kod |
21:20 | Michu | teraz ostatnio na stronach zrbila sie moda na GD |
21:21 | Michu | http://forum.php.pl/php_Biblioteka_do_obslugi_zdjec_t79014.html |
21:21 | Michu | tu zamieszczona jest biblioteka |
21:21 | Michu | o GD dla osob ktore nie zabardzo sa w tym temacie |
21:22 | Michu | a co do analizy kodow |
21:22 | Michu | to zawsze mnie najciekawsze wydawaly sie fora do analizowania |
21:23 | Michu | czesto widac wypowiedzi |
21:23 | Michu | iz gotowe cms'y sa lepsze bo mozesz przeanalizowac kod 100 razy |
21:23 | Michu | a i tak bedze luka |
21:23 | Michu | ta gotowce sa juz sprawdzone |
21:24 | Michu | jednak czlowiek na bledach sie uczy |
21:24 | eromai | ;] |
21:24 | Michu | i nie mozna z takim zdaniem w zyc caly czas |
21:24 | Michu | wiec najepiej nic nie robmy |
21:24 | Michu | bo mozna blad popelnic |
21:24 | mik01aj | a poza tym wlasne cmsy i skrypty sa bezpieczniejsze dlatego, ze nikt tak naprawde nie wie, w jaki sposob dzialaja ;> |
21:25 | Michu | nie uruchamiajmy pc nie podlewajmy kwiatkow |
21:25 | Michu | prawda nikt nie dostepu do zrodla |
21:25 | Michu | ale teraz najgorsze sa SQL indection bo coraz wiecej sie o tym mowi a ludze itak |
21:26 | Michu | to lekcewarza |
21:26 | Michu | a inni wykorzystuja |
21:26 | Michu | a jezeli boimy sie o nasz cms |
21:26 | Michu | to polecem stworzenie systemu logow |
21:26 | Michu | ze zapisoja cala aktywnosc zapytania ipt |
21:27 | Michu | lecz przy duzej odwiedzalnosci bede one wiele zajmowaly |
21:28 | Michu | wiele mozna sie nauczyc z gotowcow |
21:28 | Michu | typu podejscie do kodu |
21:28 | Michu | i do buforowania |
21:28 | Michu | i do skladni ogolnie |
21:29 | Michu | coraz wieksza popularnosc zdbywaja strony gdzie mozna sprawdzic czy dany pc jest wlaczony np |
21:29 | Michu | a jest to bardzo proste |
21:29 | Michu | wystarczy funkcja |
21:29 | Michu | system(); |
21:29 | Michu | www.php.net/system |
21:29 | Michu | komenda ping |
21:29 | Michu | i mamy |
21:29 | Michu | podobnie skanowanie portów |
21:30 | Michu | i te antywirosy online |
21:30 | Michu | to nie jest takie stasze |
21:30 | Michu | a jak to jest z PEAR |
21:30 | Michu | ? |
21:31 | Michu | niby takie piekne mialo byc |
21:31 | Michu | a co jest |
21:31 | Michu | dziala tylko z php 4 |
21:31 | Michu | paczki które zawiele nie potrafia |
21:32 | Michu | Czy kos moze z osob tu zgromadzonych rbil projekty |
21:32 | Michu | na wiecej niz 2 osoby |
21:32 | Michu | ? |
21:32 | Michu | bo nie wem czy pisać o ULM |
21:33 | Michu | jezeli nie |
21:33 | Michu | to tylko czy sa jakies pytanie |
21:33 | Michu | a |
21:33 | Michu | ? |
21:34 | Michu | jezeli nie |
21:34 | eromai | co to ULM ?? :P |
21:34 | earth | ja nie robię, ale chętnie dowiedziałbym się czegoś o ULM |
21:34 | Michu | juz |
21:34 | Cimoszewicz | Ubogie Logiczne Myslenie |
21:34 | Cimoszewicz | zart :P |
21:34 | Michu | Unified Modeling Language |
21:35 | Michu | jezeli nad projektem |
21:35 | Michu | pracuje wiecej niz 1 osoba |
21:35 | Michu | to musza sie ze soba jakoć komunikować |
21:35 | Michu | mona by zpisać wszystkie funkcje |
21:35 | Michu | na krtkach |
21:35 | Michu | i tak by się zgromadził ich tysiace |
21:36 | Michu | wiec Powstal UML |
21:36 | Michu | schematycznie pokazane funkcje |
21:36 | Michu | by 2 programisa mogl je odczytac |
21:36 | eromai | czyli taki pseudo kod ?? |
21:36 | Michu | taki grafik |
21:36 | eromai | acha |
21:36 | Michu | gdzie sa przedstawione |
21:36 | Michu | funkce |
21:37 | Michu | i do czego sie odwoluja |
21:37 | Michu | taki schematychnie |
21:37 | Michu | pokazane |
21:37 | Michu | ale to nie wyklad o UML |
21:37 | Michu | wiec jezeli ten dobrze wypadl |
21:37 | Michu | to zrobie kolejny |
21:38 | Michu | i na konec apel do wszystkich |
21:38 | Michu | nie zyjmy w przeswiadczenu ze |
21:38 | Michu | mozemy cos zepsuc i lepiej miec gotowca |
21:38 | Michu | bo tak mysqlc najlepiej nie oddychajmy bo cos zepsujemy |
21:39 | Michu | ten wyklad zrobilem by odwdzieczyc |
21:39 | Michu | sie osoba ktorych wczesniej sluchalem wykladow |
21:39 | Michu | i ludzia ktorzy robia linuxa bo bez nich bym mial samego pc bez systemu |
21:40 | Michu | dobrze ze sa ludzie ktorzy mysql o innych |
21:40 | Michu | żegnam wszystkich |
21:40 | nav | mysql o innych? :F |
21:40 | Michu | mysla |
21:40 | Michu | blad |
21:40 | Cimoszewicz | albo juz takie zboczenie :P |
21:40 | Michu | mam nadzieje iz wyklad sie podobal |
21:40 | Cimoszewicz | zawodowe ;] |
21:40 | Michu | no |
21:40 | Michu | :D |
21:41 | Michu | wyklad zakonczony |
21:41 | nav | mi sie nie podobalo to co zdazylem zobaczyc :> |