Zaloguj się, aby obserwować  
Lurrcio

Webmastering - HTML, PHP, JavaScript, edytory - temat ogólny

1333 postów w tym temacie

Dnia 06.05.2012 o 18:50, zerohunter napisał:

Eh, ale ja mam tam różne słowa.


No ale te słowa masz oddzielone jakimś stałym znakiem? Jeśli tak, to zamieniasz go na:
"/> <userWord word="
Wtedy wszystkie słowa poza pierwszym i ostatnim będą elegancko w znacznikach.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 06.05.2012 o 21:34, zerohunter napisał:

No właśnie nie, same słupki.


Czyli oddzielającym znakiem jest "enter"?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 06.05.2012 o 21:53, zerohunter napisał:

Entera nie da się wprowadzić do zamień.


To znajdź sobie edytor gdzie się da. Albo spróbuj z "\n" albo "\r\n"

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Trochę wstyd pytać, ale słaby jestem z obiektówki. Co oznacza taki zapis w PHP:
$this->costam()->costam()->costam();

np.
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = ''Page not found'';

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.05.2012 o 04:03, Xantus napisał:

Trochę wstyd pytać, ale słaby jestem z obiektówki. Co oznacza taki zapis w PHP:
$this->costam()->costam()->costam();

np.
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = ''Page not found'';


To jest tzw. wywołanie łańcuchowe, możliwe do zastosowania wtedy, gdy kolejne metody w łańcuchu zwracają obiekty. Przykładem takiego wywołania w innym języku (JavaScript) jest np.:

var str = ''Ala ma kota''.substr(0, 6).replace(''Ala'', ''Jola'').toUpperCase().concat('' PSA!'')

który spowoduje krótkim wywołaniem zmianę tekstu ''Ala ma kota'' na ''JOLA MA PSA!'' - tradycyjnie wyglądałoby to tak (oba przykłady dają ten sam wynik):

var str = ''Ala ma kota'';
str = str.substr(0, 6);
str = str.replace(''Ala'', ''Jola'');
str = str.toUpperCase();
str = str.concat('' PSA!'');

Który z nich jest wygodniejszy? :)
Oczywiście trzeba wyważyć pisanie tego typu one-linerów z czytelnością kodu, ale na ogół ten pierwszy sposób zapisu powinien być preferowany.

Warunkiem do tworzenia klas, których metody można wywoływać łańcuchowo, jest zwracanie obiektu przez każdą kolejną metodę w łańcuchu oprócz ostatniej. W JavaScripcie wszystko jest obiektem, więc zawsze można dopisać kolejną kropkę i kolejną metodę (choć czasem nie ma to sensu), ale w PHP polega to na tym, że mając obiekt klasy:

class Samochod {
  public function jazdaDoPrzodu() {
    // jakies instrukcje
    return $this;
  }

  public function zmienOpony() {
    // jakies instrukcje
    return $this;
  }

  public function zatankujPaliwo(Paliwo $paliwo) {
    // jakies instrukcje
    return $this;
  }
  
  public function podajPredkoscNaGodzine() {
    return $this->predkoscNaGodzine;
  }

Można napisać:

$samochod->zatankujPaliwo($pb95)->zmienOpony()->jedzDoPrzodu();
$samochod->zmienOpony()->zatankujPaliwo($pb95)->jedzDoPrzodu();
$samochod->jedzDoPrzodu();
$predkosc = $samochod->jedzDoPrzodu()->podajPredkoscNaGodzine();

Ale nie można napisać:

$samochod->podajPredkoscNaGodzine()->jedzDoPrzodu();

Bo "podajPredkoscNaGodzine" nie zwraca obiektu (a już na pewno nie typu Samochod), tylko typ prosty (int lub float). Dobrym stylem programowania w PHP-ie jest zapewnianie, że wszystkie metody obiektów mają na końcu instrukcję return z argumentem - nawet te, które na pierwszy rzut oka niczego sensownego nie zwracają (wtedy po prostu powinny mieć na końcu return $this, co pozwoli na tworzenie wywołań łańcuchowych).

W Zendzie (a z niego, o ile się nie mylę, pochodzi Twój przykład) wszystkie obiekty są w ten sposób napisane. Pierwszą linijkę należałoby czytać tak:

"Pobierz będący jednym z moich pól obiekt Zend_Http_Response i zmień kod odpowiedzi na tym obiekcie na 404". Bezpośredni ekwiwalent:
$response = $this->getResponse();
$response->setResponseCode(404);

Druga linijka z Twojej wklejki jest trochę inaczej skonstruowana - wyjaśnić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

WIELKIE DZIĘKI!!!!

Spodziewałem się jednolinijkowej odpowiedzi, a tu takie miłe zaskoczenie.
Właśnie uczę się na szybko Zenda (jak po 2 linijkach kodu to udało ci się wywnioskować? :) i teraz wszystko się robi jaśniejsze.

Dnia 10.05.2012 o 06:16, Vilmar napisał:

Druga linijka z Twojej wklejki jest trochę inaczej skonstruowana - wyjaśnić?


A było by bardzo miło. Wkleiłem specjalnie 2 llinijki, bo sprawiały wrażenie że działają inaczej.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 12.05.2012 o 20:16, Xantus napisał:

A było by bardzo miło. Wkleiłem specjalnie 2 llinijki, bo sprawiały wrażenie że działają
inaczej.


Działają bardzo podobnie - w drugim wypadku zamiast odwoływać się do obiektu zwracanego przez funkcję, odwołujemy się bezpośrednio do obiektu.
W skrócie:
Klasa A ma zmienną publiczną message
Klasa B ma zmienną view, która jest instancją klasy A
Żeby z klasy B dostać się do zmiennej message:
$this->view->message
To jak matrioszki - klasa "zawiera w sobie" inną klasę.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 12.05.2012 o 20:16, Xantus napisał:

$this->view->message = ''Page not found'';


''view'' To jest obiekt widoku (zakładam, że termin MVC nie jest Ci obcy) - pewną niekonsekwencją Zenda jest fakt, że do widoku odwołujemy się przez $this->view, a nie przez $this->getView() (jak w przypadku $this->getResponse()), ale to nawet lepiej, bo tak jest krócej ;)

Wszystko co znajduje się po $this->view nie odnosi się już do obiektu $this, ale do obiektu $view (Zend_View).
->message = ''Page not found'' to nic innego jak przypisanie zmiennej widoku o nazwie ''message'' wartości ''Page not found''. Jak większość rzeczy w PHP i w Zendzie, można by było to napisać inaczej, np. tak:

$this->view->set(''message'', ''Page not found'');

Zend wykorzystuje tu dość ciekawą cechę PHP-a - tzw. magiczne metody, które powodują, że ten język jest tak elastyczny. Otóż wydawałoby się, że skoro piszemy $this->view->message = ''X'', to obiekt $view powinien zawierać właściwość/pole $message (analogicznie do tego w jaki sposób Zend_Controller_Action zawiera z góry zdefiniowaną właściwość $view - żeby daleko nie szukać ;)), ale w rzeczywistości ani tak nie jest, ani nie jest to wcale wymagane. Możemy napisać:

$this->view->reksio = ''X'';
$this->view->szarik = ''Y'';
$this->view->bonifacy = ''Z'';

i wszystko będzie w porządku - do widoku zostaną przekazane zmienne ''reksio'', ''szarik'' i ''bonifacy''. Wystarczy pamiętać, że można by było równie dobrze napisać:

$this->view->set(''reksio'', ''X'')->set(''szarik'', ''Y'')->set(''bonifacy'', ''Z'');

(po moim poprzednim wykładzie powinieneś przewidzieć, że taki zapis jest możliwy i całkiem często wykorzystywany w praktyce :)).

No dobra, ale po co przekazywać jakiekolwiek zmienne do widoku? To dość oczywiste. Załóżmy, że mamy szablon HTML (załóżmy też, że w stylu Zenda):

<html>
<head>
<title><?php echo $this->title; ?></title>
</head>
<body>
<?php echo $this->message; ?>
</body>
</html>

Oraz kontroler:

class GramplController extends Zend_Controller_Action {
    public function indexAction() {
        $this->view->title = ''Gram.pl - strona główna'';
        $this->view->message = ''Witamy na stronie głównej gram.pl!'';
    }
    
    public function sklepAction() {
        $this->view->title = ''Gram.pl - sklep'';
        $this->view->message = ''Witamy w sklepie gram.pl!'';
    }
    
    public function forumAction() {
        $this->view->title = ''Forum gram.pl napisane w Zendzie!'';
        $this->view->message = ''Witamy na forum gram.pl!'';
    }
}

Co by było, gdybyśmy weszli na strony: /grampl (index to nazwa domyślnej akcji), /grampl/sklep i /grampl/forum?
Pierwsza miałaby tytuł "Gram.pl - strona główna" i zawartość "Witamy na stronie głównej gram.pl!", druga: tytuł "Gram.pl - sklep" i zawartość "Witamy w sklepie gram.pl!", a trzecia: tytuł "Forum gram.pl napisane w Zendzie!" i zawartość "Witamy na forum gram.pl!"

Dzięki temu możemy mieć tylko jeden szablon layoutu w HTML i wypełniać go różną zawartością zależnie od kontrolera i akcji, które wywołujemy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Witam wszystkich. Czy byłby ktoś taki miły i dał mi jakiś link z gotową stroną w html tak żeby potem wystarczyło tylko skopiować do notatnika i pozmieniać nazwy? A może zrobi ktoś taką? Interesuje mnie prosta zstrona z 3 odnośnikami ze zdjęciem i tekstem na każdym (na każdej żeby był też przycisk "powrót"). Muszę zrobić to na informatykę, a kompletnie się w tym nie orientuję.

PS. Wiem, że nie ładnie tak oszukiwać, ale gdybyście poznali nauczycielkę to zmienilibyście zdanie ;]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W trakcie tworzenia strony ćwiczeniowej zauważyłem (cóż za niespodzianka), że IE wyświetla... No właściwie nic prawie z CSS 3.

Jest jakiś prosty sposób, by nie tworzyć osobnych reguł dla każdego stylu i każdej cześci strony dla interpretacji przez IE, tylko coś w rodzaju przekierowania/ alternatywnego stylu w innym zewnętrzym pliku?

Zdaję sobię sprawę że mogę pominąć sporne części z CSS 3, ale ta stronka właśnie została założona w celu jego ćwiczenia :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 22.05.2012 o 17:39, Boguslav4 napisał:

W trakcie tworzenia strony ćwiczeniowej zauważyłem (cóż za niespodzianka), że IE wyświetla...
No właściwie nic prawie z CSS 3.

Jest jakiś prosty sposób, by nie tworzyć osobnych reguł dla każdego stylu i każdej cześci
strony dla interpretacji przez IE, tylko coś w rodzaju przekierowania/ alternatywnego
stylu w innym zewnętrzym pliku?

Zdaję sobię sprawę że mogę pominąć sporne części z CSS 3, ale ta stronka właśnie została
założona w celu jego ćwiczenia :)


chodzi Ci o coś takiego jak masz nawet w źródle tego forum - komentarz warunkowy (imho śmieszny wynalazek)
<!--[if IE]>
...
<![endif]-->

Wtedy dla ie dopinasz specjalny plik ze stylami (dla "specjalnej" przeglądarki...)

swoją drogą radujmy się - dzisiaj chrome wygrało z ie pod wzgledem popularności

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 02.07.2012 o 19:43, Call_me_Kay napisał:

Czy jest możliwe, aby unikalnych kliknięć na stronie było więcej niż wszystkich?


Unikalnych kliknięć? O jakich statystykach mówisz?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 02.07.2012 o 20:10, rob006 napisał:

> Czy jest możliwe, aby unikalnych kliknięć na stronie było więcej niż wszystkich?


Unikalnych kliknięć? O jakich statystykach mówisz?


http://www.top-rank.pl

Zastanawia mnie to, że niektóre strony mają więc własnie unikalnych wejść aniżeli wszystkich. Jak to jest możliwe? Załóżmy, że mamy 100 unikalnych, a więc wszystkich powinno być minimum 100, ale na pewno nie mniej?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 02.07.2012 o 22:53, Call_me_Kay napisał:

http://www.top-rank.pl

Zastanawia mnie to, że niektóre strony mają więc własnie unikalnych wejść aniżeli wszystkich.
Jak to jest możliwe? Załóżmy, że mamy 100 unikalnych, a więc wszystkich powinno być minimum
100, ale na pewno nie mniej?


To po prostu jakiś shitowy ranking, pełno takiego syfu w internecie który działa tylko w sobie znany sposób.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 02.07.2012 o 23:01, rob006 napisał:

To po prostu jakiś shitowy ranking, pełno takiego syfu w internecie który działa tylko
w sobie znany sposób.


To znaczy wydaję mi się, że po prostu musi istnieć coś na zasadzie płacenia za wysokie miejsce w rankingu i nabijania sztucznych statsów. Chyba innej opcji nie ma.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować