Visualizzazione dei risultati da 1 a 10 su 15

Discussione: MVC php-login project

Visualizzazione discussione

  1. #3
    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ù

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.