• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obiektowy PHP

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
616 wizyt
pytanie zadane 22 lipca 2017 w Rozwój zawodowy, nauka, praca przez Kamil Gąsior Obywatel (1,430 p.)
edycja 22 lipca 2017 przez HaKIM

Siemka czy to co tu napisałem ma jaki kolwiek sens czy zle mysle ? Jesli zle to znacie jakies kursy lub tutoriale co do obiektowego php ? Z góry dzięki :)

 

<?php

class Login
{
    private $connect;


    public function setConnect($connect)
    {
        try {
            if ($this->connect = $connect)
                echo 'działa';

        }
        catch (PDOException $e)
        {
            echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
        }
    }
}

class User
{

    private $login;
    private $password;
    private $sql;
    private $ile_userow;
    private $result;
    private $wiesz;
    private $blad;

    public function setLogin($login)
    {
        $this->login=$login;
    }


    public function setPassword($password)
    {
        $this->password = $password;
    }


    public function getLogin()
    {
        return $this->login;
    }

    public function setSql($sql)
    {
        $this->sql=$sql;
        $this->ile_userow=$ile_userow;
        $this->wiersz=$wiesz;

        if($sql)
        {
        $ile_userow=$sql->num_rows;

        if($ile_userow>0){

            $wiersz=$sql->fetch_assoc();

            $_SESSION['zalogowany']=true;
            $_SESSION['email']=$wiesz['email'];
        }
        else
        {
            $_SESSION['bladd']='<span style=color:red >Nieprawidłowe dane.</span>';
            header('Location: index.php');
        }
        }


    }



}
?>

 

<?php
require_once 'class.php';

if(isset($_POST['login'])){

    $connect=new Login();
    $sql=new PDO('mysql:host=localhost;dbname=gaska', 'root', '');
    $connect->setConnect($sql);

    $user = new User();
    $user->setLogin($_POST['login']);
    $user->setPassword($_POST['password']);
    $use=$user->getLogin();
    $sql2="SELECT * FROM users WHERE email='$use'";
    $user->setSql($sql2);

}


?>

<form method="post">
    LOGIN:<br/>
    <input type="text" name="login"><br/>
    Hasło:<br/>
    <input type="password" name="password">
    <br/><br/>
    <input type="submit" value="Zaloguj się">
</form>

 

2 odpowiedzi

+1 głos
odpowiedź 22 lipca 2017 przez HaKIM Szeryf (87,590 p.)
edycja 22 lipca 2017 przez HaKIM
 
Najlepsza

class Login
{
    private $connect;
 
 
    public function setConnect($connect)
    {
        try {
            if ($this->connect = $connect)
                echo 'działa';
 
        }
        catch (PDOException $e)
        {
            echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
        }
    }
}

Ten kod nie powinien mieć miejsca w klasie Login.

Tak samo:

    public function setSql($sql)
    {
        $this->sql=$sql;
        $this->ile_userow=$ile_userow;
        $this->wiersz=$wiesz;
 
        if($sql)
        {
        $ile_userow=$sql->num_rows;
 
        if($ile_userow>0){
 
            $wiersz=$sql->fetch_assoc();
 
            $_SESSION['zalogowany']=true;
            $_SESSION['email']=$wiesz['email'];
        }
        else
        {
            $_SESSION['bladd']='<span style=color:red >Nieprawidłowe dane.</span>';
            header('Location: index.php');
        }
        }
 
 
    }

Przeniósłbym do warstwy infrastruktury.

<?php
require_once 'class.php';
 
if(isset($_POST['login'])){
 
    $connect=new Login();
    $sql=new PDO('mysql:host=localhost;dbname=gaska', 'root', '');
    $connect->setConnect($sql);
 
    $user = new User();
    $user->setLogin($_POST['login']);
    $user->setPassword($_POST['password']);
    $use=$user->getLogin();
    $sql2="SELECT * FROM users WHERE email='$use'";
    $user->setSql($sql2);
 
}
 
 
?>
 
<form method="post">
    LOGIN:<br/>
    <input type="text" name="login"><br/>
    Hasło:<br/>
    <input type="password" name="password">
    <br/><br/>
    <input type="submit" value="Zaloguj się">
</form>

Nie mieszamy w taki sposób PHP z HTML'em. Choć, dobrze by było całkowicie tego uniknąć poprzez system szablonów jak choćby Twig.

Poznasz kilka rzeczy związanych z OOP:

https://webmastah.pl/jak-programowac-obiektowo-cz-1-wstep/

Więcej o warstwach:

https://en.wikipedia.org/wiki/Multitier_architecture

Z pewnością przyda się wzorzec DI <- Poprawi to czytelność kodu.

Długa droga przed Tobą. Zajrzyj do wykładów Sławomira Sobótki o Domain Driven Design i architekturze, nauczysz się fajnego sposobu myślenia o kodzie. :)

Przykładowa prezentacja:

https://www.youtube.com/watch?v=CKONKZLmMwk&t=7s

Fajny przewodnik:

http://www.phptherightway.com/

Powodzenia! :)

Oh! Jeszcze jedno; Zdecydowanie naucz się rozróżniać obiekty, struktury, funkcje i procedury.

Na przykład: Klasie User bliżej jest do struktury niżeli obiektu.

komentarz 22 lipca 2017 przez Kamil Gąsior Obywatel (1,430 p.)
Dziękuje bardzo ;)
komentarz 22 lipca 2017 przez HaKIM Szeryf (87,590 p.)

Tutaj masz fajny przykład:

https://github.com/norzechowicz/mydrinks

Aby ułatwić Ci przeszukiwanie katalogów - tutaj leży diament:

https://github.com/norzechowicz/mydrinks/tree/master/src/MyDrinks/Domain

Pewnie nic z tego nie zrozumiesz ale jeszcze powrócisz do tego projektu, pisanie kodu w ten sposób to wyśmienita zabawa.

Nie jest to 100% DDD - brak strategii, modelu i bunkrów nie ma ale też jest zajebiście.

komentarz 22 lipca 2017 przez HaKIM Szeryf (87,590 p.)

Najważniejsze to nie zatrzymać się na MVC. ^^

komentarz 22 lipca 2017 przez Kamil Gąsior Obywatel (1,430 p.)
Dzięki :) Czuje taka niepewność jak to po kolei sie uczyc :/
komentarz 22 lipca 2017 przez HaKIM Szeryf (87,590 p.)
Obierz cel w programowaniu - Kim chcesz być? Jeśli architektem to weż na tapet książki (i nie tylko) związane z tą dziedziną i... rozwijaj się. :) Team leader? Poczytaj jakie umiejętności musi posiadać i szlifuj je.

Dziedzina programowania jest ogromna, coś znajdziesz dla siebie.

Grunt to obrać kierunek. :)

Raz jeszcze; zachęcam Cię do oglądania wykładów ludzi od nas bardziej doświadczonych, jedną z nich, zdecydowanie, jest Sławomir Sobótka na polskiej scenie. Nie żebym był wielkim fanem, ale na jego prezentacjach po prostu nie ma minuty nudy. :D
komentarz 23 lipca 2017 przez HaKIM Szeryf (87,590 p.)
I jak? Zdołałeś poprawić kod? Jeśli masz z czymś problem - daj znać, postaram się wyjaśnić.
komentarz 24 lipca 2017 przez Kamil Gąsior Obywatel (1,430 p.)
Dzisiaj coś popróbuje z nim, bo niestety byłem zajęty trochę :/

Dziękuje za zainteresowanie :D Jak zrobię to podeśle ;)
komentarz 24 lipca 2017 przez HaKIM Szeryf (87,590 p.)
Powodzenia! Jak coś to najwcześniej będę w stanie odpowiedź o północy. :)

Grunt to popełniać błędy i wyciągać wniski, byle na localu. :D
+1 głos
odpowiedź 22 lipca 2017 przez Paweł123 Nałogowiec (33,540 p.)

Cześć, ja korzystam z tego kursu.

 

komentarz 22 lipca 2017 przez Kamil Gąsior Obywatel (1,430 p.)
dzięki ;)

Podobne pytania

0 głosów
1 odpowiedź 552 wizyt
pytanie zadane 13 kwietnia 2017 w PHP przez Totek Użytkownik (860 p.)
0 głosów
3 odpowiedzi 5,783 wizyt
0 głosów
1 odpowiedź 420 wizyt
pytanie zadane 7 czerwca 2020 w C i C++ przez Programmingc100 Bywalec (2,620 p.)

93,432 zapytań

142,428 odpowiedzi

322,654 komentarzy

62,796 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...