Wątek przeniesiony 2019-02-14 09:35 z przez Patryk27.

PHP vs C# i $this...

Odpowiedz Nowy wątek
2019-02-14 09:13
0

czy w PHP słowo kluczowe $this ma inne znaczenie lub inaczej się zachowuje niż w innych językach, np. C# i Javie?

tak sobie testuję i nie mogę zrozumieć , dlaczego zmusza się programistę do tak częstego używania tego obiektu

O ile np. w C# mogę sobie napisać bardzo przejrzyście bez użycia this, po prostu klasa widzi że to są jej zmienne

    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person("Jan", "Kowalski");
            p.Show();
            Console.ReadLine();
        }
    }

    class Person
    {
        private string name;
        private string surname;

        public Person(string n, string sn)
        {
            name = n;
            surname = sn;
        }

        public void Show()
        {
            Console.WriteLine(name + " " + surname);
        }
    }

o tyle w php muszę tymi thisami rzucać na prawo i lewo, przez co kod jest dla mnie mniej czytelny

<?php

class Person
{
    private $name;
    private $surname;

    public function __construct ($n, $sr)
    {
        $this->name = $n;
        $this->surname = $sr;
    }

    public function Show()
    {
        echo $this->name." ".$this->surname;
    }
}

$p = new Person("Jan", "Kowalski");
$p->Show();

?>

w c# mogę zrobić np. coś takiego i kod działa, po prostu programista sam decyduje kiedy użyć tego obiektu (przeważnie się go używa, kiedy parametry funkcji mają tę samą nazwę albo jeszcze do przekazania "tej" klasy)

        public Person(string n, string sn)
        {
            this.name = n;
            surname = sn;
        }

        public void Show()
        {
            Console.WriteLine(name + " " + this.surname);
        }

Pozostało 580 znaków

2019-02-14 09:33
1

W niektórych językach this / self jest wymagane (PHP, Rust), w innych nie; zależy od widzimisię projektanta ;-)
Zarówno jedno podejście, jak i drugie, ma pewne zalety oraz wady (bycie explicit vs bycie implicit vs wygoda użytkownika).


edytowany 2x, ostatnio: Patryk27, 2019-02-14 09:33

Pozostało 580 znaków

2019-02-14 11:31
1

Sęk w tym, że dla wielu ludzi (np. mnie) kod z this w C# jest bardziej czytelny niż bez. Ale fakt, to jest opcjonalne słowo, jak komuś nie pasuje, to może sobie ustalić taką konwencję i tego słowa nie używać.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-02-14 11:43
0

Z tego co wiem w PHP jeśli pominiesz $this to zaczynają się dziać bardzo ciekawe rzeczy.
Ale czekam na odpowiedź kogoś kto się wyznaje na OOP w PHP.


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

2019-02-14 11:51
1

w PHP jeśli pominiesz $this to zaczynają się dziać bardzo ciekawe rzeczy.

Bez $this odwołujesz się do zmiennych lokalnych, nic specjalnie dziwnego: https://3v4l.org/m6WjL.


a jeżeli takiej zmiennej lokalnej nie masz to ją będziesz miał po tym odwołaniu , w c# tak zmiennej nie stworzysz;) - Miang 2019-02-15 21:36
Taka jest po prostu składnia tego języka; identycznie działa na przykład Python (w sensie deklarowania zmiennych ad hoc) i nie ma to nic wspólnego z obiektowością ;-) - Patryk27 2019-02-15 22:06
mi się podoba;) - Miang 2019-02-15 22:18

Pozostało 580 znaków

2019-02-14 12:01
0

To wynika z historii języka. Z tego co wiem PHP nie zawsze miał klasy (chociaż wtedy jeszcze zjadałem swoje gile i robiłem babki z piasku, więc nie wiem czy tak na sto procent było). Jak je dodali, to pewnie łatwiej było im było zostawić istniejący mechanizm odwoływania się do zmiennych i dodać $this niż odwracać to, że jeżeli odwołujesz się do zmiennej i jesteś wew. klasy, to wtedy używane jest pole klasy, dodawać jakiś mechanizm rozwiązywania konfliktów (co jeżeli jest pole i zmienna o tej samej nazwie), co jeżeli nie jesteś w kontekście klasy, a używasz zmiennej (w php w odróżnieniu od Javy i C# kod może być pisany poza klasą) itd.

edytowany 4x, ostatnio: Desu, 2019-02-14 12:03

Pozostało 580 znaków

2019-02-20 17:39
0

Z tego co wiem PHP nie zawsze miał klasy

Klasy w PHP pojawiły się ok. 20 lat temu w wersji 3.0. Jest to zasługa Gutmansa i Zuraskiego, którzy na potrzeby projektu uniwersyteckiego wykonali całkowity rewrite parsera.

Jeżeli kiedyś zastanawialiście się, skąd wzięły się klasy, język Simula 67 wprowadził je jako pierwszy. Koncepcja została opisana w książce Dahla, Dijkstry i Hoare z 1972 roku pt. Structured Programming:

"A procedure which is capable of giving rise to block instances which survive its call will be known as a class; and the instances will be known as objects of that class."

edytowany 1x, ostatnio: Mózg, 2019-02-20 18:11

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0