Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

586 Stron V  « < 562 563 564 565 566 > »   
Reply to this topicStart new topic
> Jeden Wielki OffTopick, jeśli masz pisać na temat, nie wchodź!
Comandeer
post
Post #11261





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Ja? Nic nie zrobiłem, napisałem o dobrych praktykach i się stało… (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
com
post
Post #11262





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


niektórzy maja swoje racje i im nie przegadasz (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #11263





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


O widzisz (IMG:style_emoticons/default/smile.gif) To się nazywa popularność (IMG:style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post
ZenekN
post
Post #11264





Grupa: Zarejestrowani
Postów: 425
Pomógł: 6
Dołączył: 7.08.2012

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


Hej mam pytanko, od kilku dni zacząłem ogarniać język C++ mam pytanie dlaczego język PHP nie ma dostępu do powłoki <windows.h> (IMG:style_emoticons/default/smile.gif) ?
Go to the top of the page
+Quote Post
kapslokk
post
Post #11265





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


(IMG:http://memytutaj.pl/uploads/2014/02/05/a-po-co-a-na-co-to-komu.jpg)
Go to the top of the page
+Quote Post
pyro
post
Post #11266





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Właśnie się dowiedziałem, że takie coś nie sypie błędami, a nawet pokazuje wartość:

  1. <?php
  2.  
  3. class A {
  4.  
  5. public function something() {
  6. $this->dqwidjoqiwdqj = 123;
  7. var_dump($this->dqwidjoqiwdqj);
  8. }
  9.  
  10. }
  11.  
  12. $a = new A();
  13. $a->something(); // 123


Tyle lat w nieświadomości...

Co więcej:

  1. <?php
  2.  
  3. class A {
  4.  
  5. public function something() {
  6. $this->dqwidjoqiwdqj = 123;
  7. var_dump($this->dqwidjoqiwdqj);
  8. var_dump(property_exists($this, 'dqwidjoqiwdqj'));
  9. var_dump(property_exists($this, 'asdasd'));
  10. }
  11.  
  12. }
  13.  
  14. $a = new A();
  15. $a->something();
  16. // 123
  17. // true
  18. // false
Go to the top of the page
+Quote Post
Pyton_000
post
Post #11267





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A czemu miałyby sypać (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
pyro
post
Post #11268





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Bo w normalnym języku, np. Javie powinno pluć błędami o próbie działania na niezadeklarowanej właściwości:

Kod
public class HelloWorld{

     public static void main(String []args){
        A a = new A();
        a.something();
     }
}


Kod
public class A {
    
    public void Something() {
        this.asdasd = 123;
        System.out.println(this.asdasd);
    }

}


Kod
sh-4.3$ javac HelloWorld.java                                                                                                                                                                                                          HelloWorld.java:5: error: cannot find symbol                                                                                                                                                                                                   a.something();                                                                                                                                                                                                                          ^                                                                                                                                                                                                                               symbol:   method something()                                                                                                                                                                                                           location: variable a of type A                                                                                                                                                                                                       ./A.java:4: error: cannot find symbol                                                                                                                                                                                                          System.out.println(this.asidjoiqwd);                                                                                                                                                                                                                          ^                                                                                                                                                                                                         symbol: variable asidjoiqwd                                                                                                                                                                                                          2 errors                                                                                                                                                                                                                               sh-4.3$


Ten post edytował pyro 17.02.2016, 12:31:53
Go to the top of the page
+Quote Post
Pyton_000
post
Post #11269





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Ale to nie Java (IMG:style_emoticons/default/smile.gif) to PHP (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
pyro
post
Post #11270





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


No wiem, przecie mówie (IMG:style_emoticons/default/nerdsmiley.png)
Go to the top of the page
+Quote Post
redeemer
post
Post #11271





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Bo Java jest językiem statycznie typowanym? Tak samo PHP nie wypluje błędów dla:
  1. <?php
  2. $cos = 'cos';


Ten post edytował redeemer 17.02.2016, 12:42:31
Go to the top of the page
+Quote Post
pyro
post
Post #11272





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(redeemer @ 17.02.2016, 13:42:02 ) *
Bo Java jest językiem statycznie typowanym? Tak samo PHP nie wypluje błędów dla:
  1. <?php
  2. $cos = 'cos';


Typowanie a operacje na niezadeklarowanych właściwościach to dwie zupełnie różne rzeczy i nie wiem co ma piernik do wiatraka (IMG:style_emoticons/default/wink.gif)

Ten post edytował pyro 17.02.2016, 12:51:33
Go to the top of the page
+Quote Post
redeemer
post
Post #11273





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Statyczne typowanie wymusza wcześniejszą deklarację zmiennej z podaniem typu tej zmiennej. W dynamicznym typowaniu nie ma takiej potrzeby (bo niby jaki typ byś miał podać). Operacja przypisania nie sprawdza czy zmienna została wcześniej zadeklarowana, ale gdy interpreter chce pobrać wartość niezadeklarowanej zmiennej to rzuca E_NOTICE.
  1. class Test {
  2. public function test() {
  3. return $this->property;
  4. }
  5. }
  6.  
  7. $t = new Test();
  8. var_dump( $t->test() );
Kod
Notice: Undefined property: Test::$property in ... on line 5

Go to the top of the page
+Quote Post
pyro
post
Post #11274





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Raczej chodziło mi o to, że w języku może być dynamiczne typowanie, a niedozwolone operowanie na niezadeklarowanych właściwościach
Go to the top of the page
+Quote Post
vokiel
post
Post #11275





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Cytat(pyro @ 17.02.2016, 13:10:07 ) *
Raczej chodziło mi o to, że w języku może być dynamiczne typowanie, a niedozwolone operowanie na niezadeklarowanych właściwościach


Ale to de facto jest to samo. Dynamiczne typowanie wyłącza konieczność wcześniejszej deklaracji zmiennej/właściwości bo pierwsze przypisanie przejmuje tę rolę.

Jeśli operowanie na niezadeklarowanych właściwościach miałoby być niedozwolone, to musiałaby nastąpić ich wcześniejsza deklaracja - czyli wyłączenie dynamicznego typowania.
Go to the top of the page
+Quote Post
pyro
post
Post #11276





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


W sumie racja

// ADD

Chociaż jednak to chyba nie do końca prawda.

Przecież z definicji typowanie statyczne jest wtedy, kiedy typ zmiennej jest znany podczas kompilacji, a typowanie dynamiczne wtedy kiedy typ zmiennej jest interpretowany podczas runtime'u.

Jeżeli nawet zadeklarujesz właściwość w klasie, a nie jest możliwe przypisywanie wartości niezadeklarowanym właściwościom, to wcale nie sprawia, że typowanie jest mniej dynamiczne. Dalej zgodnie z definicją jej typ jest interpretowany podczas runtime'u. Zajrzałem jeszcze do Wikipedii i StackOverflow i zgodnie z tym co pisałem wyżej nie chodzi tutaj o sam fakt deklaracji lub niedeklaracji zmiennej / właściwości, tylko o type-safety, więcej tak jak mówiłem wcześniej zezwolenie na operacjach na niezadeklarowanych właściwościach to jednak oddzielna sprawa

Ten post edytował pyro 17.02.2016, 17:51:09
Go to the top of the page
+Quote Post
mrc
post
Post #11277





Grupa: Zarejestrowani
Postów: 160
Pomógł: 27
Dołączył: 22.09.2008
Skąd: Tarnów

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


@pyro, to się nazywa chyba silne typowanie
Go to the top of the page
+Quote Post
pyro
post
Post #11278





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Nie, silne typowanie to niemożność użycia zmiennej danego typu w kontekście innego typu. To jeszcze zupełnie oddzielna kwestia.

Przykład języka dynamicznie ORAZ silnie typowanego: Python

// ADD

Na potwierdzenie słów:

http://stackoverflow.com/questions/1188960...-dynamic-typing

// ADD

Cytat
Static and dynamic typing, and strong and weak typing, are two totally different concepts, which, unfortunately, are very often confused.


Źródło: http://www.sitepoint.com/typing-versus-dynamic-typing/
Go to the top of the page
+Quote Post
vokiel
post
Post #11279





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


W sumie, to w PHP mogłoby to mieć sens, jednak raczej tylko dla klas, bo w przypadku zwykłych zmiennych lokalnych byłoby to mocno ograniczające skryptowy charakter języka.

  1. class A
  2. {
  3. protected $b;
  4.  
  5. public function testC()
  6. {
  7. $this->b = 'ok';
  8. $this->c = 'some exception thrown';
  9. }
  10. }
  11.  
  12. $a = new A();
  13. $a->testC(); // Exception


Ale już w skryptach to IMHO nie ma sensu
  1. $cos; // jakis var $cos żeby było wiadomo, że to deklaracja?
  2. $cos = 'ok';
  3. $cosInnego = 'nie ok';
Go to the top of the page
+Quote Post
pyro
post
Post #11280





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


@vokiel, no, zrozumieliśmy się (IMG:style_emoticons/default/wink.gif)

// EDIT

Warto dodać, że dla nieistniejących właściwości / metod są magiczne metody, ale jak ich używasz to wtedy to robisz przynajmniej świadomie i wiesz w jaki sposób je obrabiasz

Ten post edytował pyro 17.02.2016, 19:57:13
Go to the top of the page
+Quote Post

586 Stron V  « < 562 563 564 565 566 > » 
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.06.2026 - 04:36