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

Obiektowy PHP

Object Storage Arubacloud
0 głosów
372 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,500 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ź 464 wizyt
pytanie zadane 13 kwietnia 2017 w PHP przez Totek Użytkownik (860 p.)
0 głosów
3 odpowiedzi 5,304 wizyt
0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 7 czerwca 2020 w C i C++ przez Programmingc100 Bywalec (2,620 p.)

92,566 zapytań

141,420 odpowiedzi

319,614 komentarzy

61,952 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...