Visualizzazione dei risultati da 1 a 10 su 15

Discussione: MVC php-login project

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ad occhio il Model gestisce l'intera parte "M Model" del sistema senza sezionarne le competenze quindi può essere corretto come approccio.
    Un modulo può aver bisogno di altri moduli per operare. Se pensi anche solamente ad un "nodo" (contenuto)
    il modulo "Node" potrebbe usare il modulo "Tag" per la selezione dei tags da associare al nodo, oppure il modulo "User" per sapere a che utente appartiene.. ect ect..
    Ok mi è chiarissimo.

    Anche se c'è da dire che spezzando il Model in sub-pack avresti una gestione migliore del sistema (SRP)
    Ok presumo che questa articolazione la potro trovare in un vero framework.
    Tipo Synfony?
    Ho già provveduto a creare una vm con ubutu e configurare lamp inziando con la guida synfony2 di html.it mi sembra ben fatto.
    Ma volevo iniziare con un progettino già pronto che permettesse di afferrare bene in concetto mvc, pur basilare che possa essere.

    La view globale è "iniettata" per aggregazione al controllore che in questo modo la può modificare a piacimento
    ok chiaro, presumo ti riferisca proprio a questa riga di codice giusto?
    Sarebbe il controller principale dell'applicazione
    Codice PHP:
    class Controller
    {
        function 
    __construct()
        {
            
    Session::init();

            
    // user has remember-me-cookie ? then try to login with cookie ("remember me" feature)
            
    if (!isset($_SESSION['user_logged_in']) && isset($_COOKIE['rememberme'])) {
                
    header('location: ' URL 'login/loginWithCookie');
            }

            
    // create database connection
            
    try {
                
    $this->db = new Database();
            } catch (
    PDOException $e) {
                die(
    'Database connection could not be established.');
            }

            
    // create a view object (that does nothing, but provides the view render() method)
            
    $this->view = new View();
        } 
    E presumo che " $this->view = new View();" utilizzi sempre i __set magico che crea al volo la proprietà.
    Ulteriore domanda sta nel prossimo punto.

    è una funzione normale della view, si fa tramite i magic methods __get e __set

    daje e studia!!!
    Ok li conoscevo quei metodi, anche se non li avevo mai usati.
    Però mi aspettavo che fossero dichiarati esplicitamente in questo modo :

    Codice PHP:
        public function __set($name$value) {
            
    $this->$name $value;
        } 
    A questo punto mi viene solo da pensare che funzion ano anche se non sono dichiarati esplicitamente, in quanto queste righe di codice non ci sono.








    ---------------------------------------------------------------------------------------------------------------------------------------------

    Risposte a Santino

    Posso sapere perchè si chiama LoginModel ma usa delle cose da "Controller" come un "view"? E' il framework che usa questa nomenclatura? Se si, cambia framework
    E infatti hai ragione, quello che ho chiamato LoginModel, in realtà è il controllore del Login che istanzia il model che si occupa della comunicazione col db...
    Azz non si può sbagliare niente

    Sicuramente non lo chiamo framework perchè non lo è ma secondo me è molto semplice da capire e modificare (e mi pare abbastanza corretto come è impostato), utile per la prima esperienza mvc.

    Detto questo: LoginModel che è? :F
    Anche io sono d'accordo con te (sempre sperando che stiamo pensando alla stessa cosa).

    Preferivo avere non un login_controller, login_model, login_view... ma un user_controller, user_model, user_view(di cui una era la login).

    Ma in questo caso è statu strutturato come se il login fosse un'entità.
    Poco male (almeno dal mio punto di vista profano), me lo tengo cosi (anche se all'interno del login_model l'ho modificato integrando una classe user, che sicuramente dal tuo punto di vista sarà un accrocchio terribile, ma non avevo voglia di modificare tutto il login, me lo tengo e pace)

    Parallelamente sto cercando di costruire degli oggetti in modo più corretto ES
    una delle entità è negozio, il quale deve avere un metodo per la registrazione degli incassi percui :

    Codice PHP:
    class shop extends Controller
    {
        function 
    __construct()
        {
            
    parent::__construct();
        }

        function 
    writeIncassi()
        {
            
    $this->view->render('shop/incasso');
        }
        
        function 
    writeIncassi_action()
        {
            
    $shop_model $this->loadModel('shop');
            
    $write_successful $shop_model->writeIncasso();

            if (
    $write_successful == true) {
                
    header('location: ' URL 'login/index');
            } else {
                
    header('location: ' URL 'login/register');
            }        
        }    


    Codice PHP:
    class shopModel
    {
        
    /**
         * Constructor, expects a Database connection
         * @param Database $db The Database object
         */
        
    public function __construct(Database $db)
        {
            
    $this->db $db;
        }

        
    /**
         * writeIncassi
         * @return bool success state
         */
        
    public function getShops()
        {
            
    // write new users data into database
            
    $sql "SELECT * FROM negozi";
            
    $query $this->db->prepare($sql);
            
    $query->execute();
            
    $result $query->fetchAll();
            return 
    $result;
        }

        public function 
    writeIncasso()
        {
        
    //non ti indico tutto il pippone ma qui faccio la scrittura in base al $_POST sul db 
    Ti riporto per completezza uda delle view... quella per l'incasso... poi ne seguiranno molte altre.
    Codice PHP:
    <div class="content">
        <!-- echo out the system feedback (error and success messages) -->
        <?php $this->renderFeedbackMessages(); ?>

        <div class="incassi-default-box">
            <h1>Registra il tuo incasso</h1>
            <!-- register form -->
            <form method="post" action="<?php echo URL?>shop/writeIncassi_action" name="incassiform">
                <!-- the user name input field uses a HTML5 pattern check -->
                <label for="incassi_input_data">
                    Data
                </label>
                <input id="incassi_input_data" class="incassi_input" type="text" name="data" value="<?=date("d/m/Y")?>" required /><br />
                <label for="incassi_input_numeroClienti">
                    Numero Clienti 
                </label>
                <input id="incassi_input_numeroClienti" class="incassi_input" type="text" pattern="[0-9]" name="num_clienti" required /><br />
                <label for="incassi_input_contanti">
                    Contanti
                </label>
                <input id="incassi_input_contanti" class="incassi_input" type="text" pattern="[0-9]" name="contanti" required /><br />
                <label for="incassi_input_carteCredito">
                    Carte di Credito
                </label>
                <input id="incassi_input_carteCredito" class="incassi_input" type="text" pattern="[0-9]" name="carte_credito" required /><br />
                <label for="incassi_input_assegni">
                    Assegni
                </label>
                <input id="incassi_input_assegni" class="incassi_input" type="text" pattern="[0-9]" name="assegni" required /><br />
                <label for="incassi_input_trattamenti">
                    Trattamenti
                </label>
                <input id="incassi_input_trattamenti" class="incassi_input" type="text" pattern="[0-9]" name="trattamenti" required /><br />
                <label for="incassi_input_prodotti">
                    Prodotti
                </label>
                <input id="incassi_input_prodotti" class="incassi_input" type="text" name="prodotti" required /><br />

                <input type="submit"  name="writeIncassi" value="Invia Dati" />
            </form>
        </div>
    </div>



    in definitiva dopo tutto questo pippone.
    Quello che ho interpretato come poco corretto è quello che pensavi anche tu?

    Il mio modo di proseguire ha una parverza di essere corretto????
    Ultima modifica di Fractals87; 28-11-2014 a 13:43
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    Ok presumo che questa articolazione la potro trovare in un vero framework.
    Tipo Synfony?
    si o Laravel che è bellino bellino

    ok chiaro, presumo ti riferisca proprio a questa riga di codice giusto?
    Sarebbe il controller principale dell'applicazione
    Codice PHP:
    class Controller
    {
        function 
    __construct()
        {
            
    // create a view object (that does nothing, but provides the view render() method)
            
    $this->view = new View();
        } 
    E presumo che " $this->view = new View();" utilizzi sempre i __set magico che crea al volo la proprietà.
    si è questo il punto ma come scrivono sul commento, la classe View messa li cosi, non ha molto senso di esistere...

    I magic methods sono implementati dalla classe View, vai sul listato di View e vedrai che li trovi come li hai scritti

    A questo punto mi viene solo da pensare che funzion ano anche se non sono dichiarati esplicitamente, in quanto queste righe di codice non ci sono.
    NO... è impossibile che il programma giri se il codice non è scritto!!

    +1 per questo link: http://martinfowler.com/eaaCatalog/index.html
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Quote Originariamente inviata da Al_katraz984 Visualizza il messaggio
    si o Laravel che è bellino bellino

    +1 per questo link: http://martinfowler.com/eaaCatalog/index.html
    Il libro cartaceo è uno spettacolo. Suggerisco anche http://martinfowler.com/books/eip.html
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.