Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Programowanie obiektowe, Includowanie JS ( funkcja )
seba22
post
Post #1





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


Cześć!

Postanowiłem że zacznę się uczyć programowania obiektowego.

Żeby nie bawić się w przykłady typu "wkręć żarówkę", postanowiłem zrobić coś pożytecznego, a mianowicie generowanie HEAD strony www (takie coś zawsze może się przydać) więc lepiej mieć w swoim toolboxie.

Zrobiłem sobie klasę


  1. <?php
  2. class serwis_nexus_pl
  3. {
  4.  
  5.  
  6.  
  7. public function drukuj_tytul()
  8. {
  9.    echo("<title>$this->tytul</title>");
  10. }
  11.  
  12. public function drukuj_opis()
  13. {
  14.    echo("<meta name='description' content='$this->opis'>");
  15. }
  16.  
  17. public function drukuj_slowakluczowe()
  18. {
  19.    echo("<title>$this->slowa_kluczowe</title>");
  20. }
  21.  
  22. public function drukuj_includuj_javascript()
  23. {
  24.    print('<script type="text/javascript" src="'.$this->includuj_javascript.'"></script>');
  25.  
  26. }
  27. public function drukuj_includuj_css()
  28. {
  29.    print(' <link rel="stylesheet" type="text/css" href="'.$this->includuj_css.'" media="screen" />');
  30. }
  31.  
  32. public function wydrukujSerwis()
  33. {
  34.  
  35. print('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">');
  36. print('<html lang="pl" dir="ltr">');
  37. print('<head>');
  38. print('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">');
  39.    $this->drukuj_tytul();
  40.    $this->drukuj_opis();
  41.    $this->drukuj_slowakluczowe();
  42.    $this->drukuj_includuj_javascript();
  43.    $this->drukuj_includuj_css();
  44. print('</head>');
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. }
  53.  
  54.  
  55.  
  56.  
  57. }
  58.  
  59. $glowna_strona= new serwis_nexus_pl();
  60. $glowna_strona->tytul='Mój tytuł strony www';
  61. $glowna_strona->opis='ala ma kota a kot ma aids';
  62. $glowna_strona->slowa_kluczowe='kot psot myszka';
  63. $glowna_strona->includuj_javascript='jquery.js';
  64. $glowna_strona->includuj_css='wordcloud.css';
  65. $glowna_strona->includuj_css='css.css';
  66.  
  67. $glowna_strona->wydrukujSerwis();
  68.  
  69. ?>



Problemem jest, że jak wpisuje :
  1. <?php
  2. $glowna_strona->includuj_css='wordcloud.css';
  3. $glowna_strona->includuj_css='css.css';
  4. ?>


To nadpisuje mi, wartość pola CSS i drukowane jest samo "css.css".

To jest logiczne, bo w "wydrukuj serwis" zrobiłem sobie
  1. <?php
  2. $this->drukuj_includuj_css();
  3. ?>

A to pole, będzie zawierać tylko jeden ostatni element.
Ponowne wywołanie, nadpisuje pierwszy.

Czy ktoś ma jakiś pomysł jak to ominąć tak abym mógł dodawać "dowolną ilość razy" css ?
Z tym że nie ma to być "funkcja" która po prostu wydrukuje w momencie wywołania.
Wydrukowanie ma być na moje żądanie na końcu generowania strony, kiedy będę znać słowa kluczowe itp.


Będę wdzięczny za poradę smile.gif

Ten post edytował seba22 19.07.2009, 10:11:42


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 19)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


A o tablicach i rekurencji nie słyszałeś questionmark.gif


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
seba22
post
Post #3





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


Tablica to chyba rozwiązanie "nie nowoczesne". Myślałem o czymś na miarę PHP5. A nie cofaniu się w 4.


--------------------
Go to the top of the page
+Quote Post
kamil4u
post
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Zastosuj tablice - tzn. gdy dodajesz jakiś plik wsadzasz jego nazwę to tablicy, a przy drukowaniu "przelatujesz" przez całą tablicę

--EDIT--
Nienowoczesne powiadasz - to używanie pętli, zmiennych itd. też uważasz za nienowoczesne ?

Ten post edytował kamil4u 19.07.2009, 11:00:54


--------------------
Go to the top of the page
+Quote Post
seba22
post
Post #5





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


Pytanie pomocnicze.

Jak przelecieć tablicę ?

Wybacz, ja programowałem w innym języku.

Mamy tablicę
tablica['xxx'];
tablica['ppp'];

Jak to przelecieć ?
Jak dać pętle od a - z długości 3 znaki ?
Przecież to będzie jak łamanie metodą brute force. Zabije tym php ?


//kamil4u
Nie to miałem na myśli.
Nie nienowoczesne w ten sposób, myślałem żeby było jakoś bardziej światowo.

Ten post edytował seba22 19.07.2009, 11:03:55


--------------------
Go to the top of the page
+Quote Post
skowron-line
post
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


array_walk
Tu ten przykład powinien Cie zainteresować jak ustawić callback w klasie.
  1. to array_walk with a function defined in a class, try this:
  2.  
  3. <?php
  4. // An example callback method
  5. class MyClass {
  6.    static function myCallbackMethod($data) {
  7.        return $data.$data;
  8.    }
  9. }
  10.  
  11. $my_array = array('one','two','three');
  12.  
  13. // Static class method cal
  14. array_walk($my_array,array('MyClass', 'myCallbackMethod'));
  15. ?>
  16.  
  17. returns array('oneone','twotwo','threethree');
  18.  
  19. code from: <a href=\"http://uk.php.net/manual/en/language.pseudo-types.php\" target=\"_blank\">http://uk.php.net/manual/en/language.pseudo-types.php</a>
  20.  
  21. thought it would be useful here.

foreach

Cytat
Tablica to chyba rozwiązanie "nie nowoczesne".

Nie jest nowoczesne jest stare jak świat, ale ponad czasowe.

Ten post edytował skowron-line 19.07.2009, 11:08:03


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Jeżeli chcesz pisać "na miarę php5", to zaczynamy:

Gdzie masz konstruktor i destruktor tej biednej klasy?
Wiesz, że polskie nazewnictwo zmiennych i metod jest niezgodne z przyjętymi standardami?

Co do pytania, tablica + foreach (tak na miarę php5)

Dodam jeszcze jedną cenną uwagę, funkcje nie powinny wyrzucać nic przez echo tylko przez retrun.
(Czemu? A nie mam ochoty tłumaczyć, znajdź w google albo na forum bo było to setki razy)

Poza tym tytuł ma się nijak do treści, piszesz o "includowaniu js" w temacie a w poście o problemach z css.

P.S. To też nie jest poprawne: (dla przykładu to)
  1. <?php
  2. echo("<title>$this->tytul</title>");
  3. ?>


Powinno być bardziej:
  1. <?php
  2. echo('<title>'.$this->tytul.'</title>');
  3. ?>


Łączenie stringów - podstawa!
Ale jak wspomniałem wcześniej w klasie używa się return.

Ten post edytował fifi209 19.07.2009, 11:11:30


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
seba22
post
Post #8





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


Dziękuję bardzo Panie kamil4u.

Użycie pętli okazało się genialnym rozwiązaniem.

  1. <?php
  2. $glowna_strona->includuj_css['chmura']='/css/wordcloud.css';
  3. $glowna_strona->includuj_css['style']='css.css';
  4. ?>


I drobna modyfikacja

  1. <?php
  2. public function drukuj_includuj_css()
  3. {
  4.  
  5.  
  6. foreach ($this->includuj_css as $element)
  7. {
  8. print(' <link rel="stylesheet" type="text/css" href="'.$element.'" media="screen" />');
  9. }
  10.  
  11. }
  12. ?>



Działa "BOSKO" smile.gif


--------------------
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(seba22 @ 19.07.2009, 11:31:38 ) *
Dziękuję bardzo Panie kamil4u.

Użycie pętli okazało się genialnym rozwiązaniem.

Działa "BOSKO" smile.gif


Mojego posta chyba w ogóle nie czytałeś, albo nie zamierzasz zastosować się do żadnej z rad co w konsekwencji nauczy Cię złych zwyczajów. (w pisaniu obiektowym)


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
seba22
post
Post #10





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


Ależ zastosowałem się.

$glowna_strona
zmieniłem na
$homepage

Witamy w Unii


--------------------
Go to the top of the page
+Quote Post
Fifi209
post
Post #11





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(seba22 @ 19.07.2009, 11:39:58 ) *
Ależ zastosowałem się.

$glowna_strona
zmieniłem na
$homepage

Witamy w Unii


A reszta? Nazwy metod(funkcji) ? Return'y ?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
seba22
post
Post #12





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


Return używa się tylko i wyłącznie jeżeli chcemy przekazać zmienną liczbową bądź wartość tekstową.

przykład:
1
2
50
kot
seba22
piec

Wtedy dajemy return.

(if jakasfunkcja($jakaswartosc)=='seba22')
{
print('Fajny gościu');
}

Jeżeli chcemy napisać samo fajny gościu, to co zrobimy taką funkcję.

function fajny_gosciu()
{
return "fajny gosciu";
}

i wywolanie

print(fajny_gosciu());


Do tego służy return i print.
Jedno zwraca swoją wartość do funkcji kiedy potrzebujemy je porównać .
Inne po prostu wydrukuje na ekranie.

I wszystko w tym temacie.

Ten post edytował seba22 19.07.2009, 11:46:35


--------------------
Go to the top of the page
+Quote Post
Fifi209
post
Post #13





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


<rotfl>

Po 1. print jest wolniejsze od echo, jeżeli nie wierzysz zmierz czas na pętli for od 0 do 100000

Co do return, właśnie dzięki temu staje się bardziej uniwersalna.

Ew. możesz zrobić zmienną np. public $content;
i tam wrzucać całą treść i na dodać metodę magiczną:

  1. <?php
  2. public function __toString() {
  3. return $this->content;
  4. }
  5. ?>


potem tylko:
  1. <?php
  2. echo $obiekt;
  3. ?>


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
seba22
post
Post #14





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


W sumie racja.

Nie uwierzysz ale 2 dni temu przepisałem cały serwis żeby używał print.

Cały czas miałem wrażenie że print jest szybszy bo to wstawka z innego języka. Zacząłem teraz przeglądać Google, i faktycznie "echo jest szybsze".

Możesz mi powiedzieć jaka jest różnicą techniczna między Print a Echo ?
Czemu nie mogą zrobić symlinka z print do echo, i będzie taka sama wydajność ?


--------------------
Go to the top of the page
+Quote Post
kamil4u
post
Post #15





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Print i echo zwracają inne wartości - więcej w manual-u tongue.gif


--------------------
Go to the top of the page
+Quote Post
seba22
post
Post #16





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


No nic stary, temacik zamykamy ^^
Bo już zboczyliśmy smile.gif


Boże, właśnie zobaczyłem że wszędzie piszę print i echo w nawiasach choć to nie funkcja :/
Oj niedobrze...


--------------------
Go to the top of the page
+Quote Post
Fifi209
post
Post #17





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(seba22 @ 19.07.2009, 12:02:04 ) *
W sumie racja.

Nie uwierzysz ale 2 dni temu przepisałem cały serwis żeby używał print.

To chyba nie wielki problem, przynajmniej nie z edytorem, którego ja używam. (Jest to notepad++ i załatwiłbym to wyrażeniami regularnymi)

Cytat(seba22 @ 19.07.2009, 12:02:04 ) *
Cały czas miałem wrażenie że print jest szybszy bo to wstawka z innego języka. Zacząłem teraz przeglądać Google, i faktycznie "echo jest szybsze".

Ludzie popełniają błędy.

Cytat(seba22 @ 19.07.2009, 12:02:04 ) *
Możesz mi powiedzieć jaka jest różnicą techniczna między Print a Echo ?

Po części dostałeś odpowiedź ja bym tylko dodał, że echo to właściwie nie jest funkcja tylko element składni języka popatrz jak można go użyć:
  1. <?php
  2. echo('tekst');
  3.  
  4. // lub
  5.  
  6. echo 'tekst';
  7. ?>

Z print'em już tak nie zrobisz.


Cytat(seba22 @ 19.07.2009, 12:02:04 ) *
Czemu nie mogą zrobić symlinka z print do echo, i będzie taka sama wydajność ?

Po co komu dwie funkcje o takim samym działaniu i innej nazwie? smile.gif
Poza tym mało kto korzysta z print'a.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
kamil4u
post
Post #18





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Cytat
Z print'em już tak nie zrobisz.

@fifi209: http://pl2.php.net/print

Cytat
Boże, właśnie zobaczyłem że wszędzie piszę print i echo w nawiasach choć to nie funkcja :/
Oj niedobrze...

Bez różnicy smile.gif

Ten post edytował kamil4u 19.07.2009, 12:20:27


--------------------
Go to the top of the page
+Quote Post
Fifi209
post
Post #19





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(kamil4u @ 19.07.2009, 12:18:59 ) *
@fifi209: http://pl2.php.net/print
Bez różnicy smile.gif


Faktycznie, moje niedopatrzenie. Może dla tego, że nigdy nie używałem print'a haha.gif
Albo po prostu pomyliło mi się z printf i cout w c++ bo one tam działają inaczej. ;p


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #20





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Bez jaj - to nie OOP smile.gif
Przenoszę na Przedszkole


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 18:13