LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Questa pubblicazione sarà di interesse per le piccole società di sviluppo di siti Web con utilizzando CMS... Un po 'di storia: siamo un piccolo dipartimento che sviluppa siti web. Per molto tempo abbiamo sviluppato siti solo su sistemi gestionali (OpenCart, WordPress, MODX e auto-scritti), che nella loro essenza erano semplici e dello stesso tipo, ma dall'estate dello scorso anno è arrivata una tendenza a sviluppare siti che non fossero solo il volto dell'azienda su Internet, ma uno degli strumenti aziendali.

Quindi, ad esempio, c'era un ordine per un'azienda di trasporti che gestisce tratte e vorrebbe che tutta la gestione (prenotazione e pagamento di un biglietto, anche tramite cassa) avvenga tramite il sito web.

Come puoi immaginare, non c'è molto da aspettarsi da un CMS qui. Al contrario, qualsiasi algoritmo che ha seguito ci ha ostacolato. Pochi giorni dopo, sul primissimo sito di questo tipo, c'erano solo le stampelle e quasi tutte le elaborazioni venivano eseguite esclusivamente in javascript e il CMS veniva utilizzato come interlayer per la registrazione e il recupero dal database.

Non potevamo sopportarlo per molto tempo e, dopo averci consultato, abbiamo deciso di utilizzare il microframework per tali progetti e abbiamo immediatamente messo gli occhi su Slim.

Come dice il sito ufficiale:

Slim è un micro framework che ti aiuta a scrivere rapidamente applicazioni web semplici ma potenti.

E lo è davvero, puoi scaricarlo manualmente con un archivio o utilizzare Composer. Successivamente, crea index.php con il seguente contenuto:

// Connetti il \u200b\u200bframework richiede "Slim / Slim.php"; // Registra autoloader \\ Slim \\ Slim :: registerAutoloader (); $ app \u003d nuovo \\ Slim \\ Slim (); $ app-\u003e get ("/ hello /: name", function ($ name) (echo "Hello $ name";)); $ app-\u003e run ();
Questa è una semplice applicazione che stampa ciao ((nome utente)) durante la navigazione verso un URL.
Ma quanto siamo rimasti delusi dal fatto che è qui che finisce la maggior parte degli articoli su Internet e in questa fase molto rimane incomprensibile per noi.

Slim stesso non specifica un chiaro sistema di distribuzione per i file sul disco, quindi non abbiamo trovato un modo migliore che osservare ogni instradamento. Il giorno successivo, rendendosi conto che qualcosa stava andando storto, si è deciso di creare cartella separata e mettere i file lì in gruppi. Quanto segue è stato aggiunto al file index.php

Foreach (glob ("Routes / *. Php") as $ file) include ($ file);
Nel corso del tempo, ciascuno di questi file è diventato troppo grande, ma dopo aver esaminato la documentazione ufficiale, non è stato trovato nulla. La soluzione è stata trovata su GitHub, dove si diceva cosa fare:

$ app-\u003e get ("post /: type /: id", "\\ Controller \\ Post: onePost");
Dove \\ Controller \\ Post è la classe che ho capito è stata aggiunta secondo RSP-0. E onePost è il suo metodo.
Pertanto, la nostra struttura dei file è stata aggiornata con un'altra directory del controller, in cui abbiamo registrato azioni che potevano essere utilizzate in diverse opzioni di routing contemporaneamente. Credo buon esempio questo instradamento, che è racchiuso in un gruppo, uno stile che per qualche motivo non è descritto nella stessa documentazione.

$ app-\u003e group ("/", function () usa ($ app) ($ app-\u003e get ("post /: type /: id", "\\ Controller \\ Post: onePost") -\u003e condizioni (array ( "type" \u003d\u003e "(3,)", "id" \u003d\u003e "(1,)")) -\u003e setParams (array ("app" \u003d\u003e $ app, "type" \u003d\u003e $ type \u003d NULL, " id "\u003d\u003e $ id \u003d 0)) -\u003e nome (" onePost ");));
Dove le condizioni è una convalida di espressione regolare, setParams - passaggio di parametri al metodo onePost e name è il nome per un possibile reindirizzamento questa pagina (Ad esempio $ app-\u003e redirectTo ("onePost");)

Non sarà superfluo verificare la disponibilità non nel controller stesso, ma a livello di router, grazie al Middleware. Ad esempio, per il pannello di amministrazione, puoi immediatamente inserire un intero gruppo come:

$ app-\u003e gruppo ("/ admin", $ authenticateForRole ($ app, "admin"), function () use ($ app) (...));
Dove il secondo argomento è la funzione anonima assegnata alla variabile. Nel mio caso, assomiglia a questo:

$ authenticateForRole \u003d function ($ app, $ role \u003d "admin") (return function () use ($ app, $ role) (\\ Controller \\ Autch :: chekUserRole ($ app, $ role);););
Sfortunatamente, e per alcuni, forse fortunatamente, slim non ha il lavoro di database integrato, ma questo problema viene risolto abbastanza semplicemente quando creiamo un oggetto App. Possiamo passare alcuni argomenti da utilizzare.

Per esempio:

$ app \u003d new \\ Slim \\ Slim (array ("templates.path" \u003d\u003e "Views", "debug" \u003d\u003e TRUE, "mode" \u003d\u003e "development", "BDbase" \u003d\u003e "localhost", "BDuser" \u003d\u003e "username", "BDpassword" \u003d\u003e "password", "BDname" \u003d\u003e "basename"));
Quindi possiamo tranquillamente usare Dependency Injection per lavorare con il database, facendo riferimento ai parametri passati durante la creazione usando $ app-config ("Name");

$ app-\u003e database \u003d nuovo mysqli ($ app-\u003e config ("BDbase"), $ app-\u003e config ("BDuser"), $ app-\u003e config ("BDpassword"), $ app-\u003e config ("BDname ")); if ($ app-\u003e database-\u003e connect_errno) (echo "Impossibile connettersi a MySQL: (". $ app-\u003e database-\u003e connect_errno. ")". $ app-\u003e database-\u003e connect_error; die ();) $ app-\u003e database-\u003e query ("SET NAMES" utf8 ""); $ app-\u003e database-\u003e query ("SET CHARACTER SET" utf8 ""); $ app-\u003e database-\u003e query ("SET SESSION collation_connection \u003d" utf8_general_ci "");
Tutte le altre funzionalità di Slim sono ben documentate. In conclusione, voglio dire che per il nostro team, che non ha mai lavorato prima con vari frame, questa è stata una bella esperienza che già utilizziamo nei progetti, non c'è voglia di tornare a nessun CMS.

Solo una settimana fa, avevo bisogno di implementare un piccolo compito. Per questo, utilizzare un framework a tutti gli effetti è piuttosto stupido e CMS non è affatto adatto, da allora il compito è troppo ristretto e semplice. Fino a questo punto ho sentito parlare di micro-framework, ma non li ho usati, perché non ce n'era bisogno. Ora questa esigenza è sorta e ho lasciato la mia scelta a Slim. All'inizio, ovviamente, sono stato travolto da Slim e Silex, ma poi dopo aver letto la documentazione di entrambi in modo più dettagliato e ho concluso che Silex sarà "più pesante" di Slim per la presenza di librerie aggiuntive di cui io, in generale, non ho bisogno.

E quindi, il compito era creare un sondaggio sotto forma di immagini della loro valutazione. Cosa ho dovuto implementare esattamente non lo descriverò, perché questo "un po '" violava il copyright di persone che, alla fine, si sono rivelate generalmente sul cappello ... e così volevano ...: "(

Installazione

L'installazione del framework mi ha fatto molto piacere. È semplice: usiamo Composer e non ci preoccupiamo.

("require": ("slim / slim": "2. *"))

Php composer.phar installa

Primo avvio

In index.php scriviamo quanto segue:

require_once "../vendor/autoload.php"; \\ Slim \\ Slim :: registerAutoloader (); $ app \u003d nuovo \\ Slim \\ Slim (); $ app -\u003e get ("/", function () (echo "Ciao, amico!";)); $ app -\u003e run ();

Ora se vai a home page, poi vedremo la scritta "Hi, man!".

Come hai già capito, puoi già iniziare a lavorare con questo framework e non abbiamo fatto quasi nulla! Tutte le altre chicche ti aspettano nella documentazione

Come fa qualcuno a sapere come usare questo sistema?

Non riesco a trovare tutorial o libri o altro su come utilizzare questo programma. Sì, il loro sito web spiega brevemente alcune cose, ma non ci sono chiarimenti o altro. Google mi ha deluso.

Qualcuno mi può aiutare con questo? Devo usarlo, ma mi sembra completamente estraneo.

Il punto chiave della presentazione menzionata sopra di Jeremy Kendall (guardala) è che i documenti non vengono menzionati fino a quando non vengono interrotti 2/3: affinché Slim gestisca il routing, è necessario un file .htaccess :

RewriteEngine On RewriteCond% (REQUEST_FILENAME)! -F RewriteRule ^ index.php

Et voilà, l'esempio all'inizio dei documenti Slim ora funzionerà per te. colpisce la fronte

Maggiori informazioni sulla sintassi e sul contenuto di queste regole .htaccess :

I seguenti post mi hanno aiutato molto a iniziare con la mia prima applicazione sottile. Ma sono molto specifici per la creazione di servizi Web RESTful.

Ho letto i post e poi ho scaricato il codice per giocare con loro. Successivamente ho potuto mescolare e abbinare i pezzi migliori e iniziare a sviluppare in meno di 2 giorni.

AGGIORNARE: 3 anni dopo, è tempo di aggiungere alcuni aggiornamenti a questa risposta. Durante questo periodo, molto è cambiato nel framework sottile (e persino in PHP).

La versione Thin 3 è stata rilasciata e ha apportato modifiche significative ad essa. Nei miei test, è un po 'più lento e leggermente più complesso del thin 2. Ma l'architettura è saggia, molto migliore, sicura, adatta sia a grandi progetti che a piccoli siti web.
Inoltre, PHP ha adottato una standardizzazione davvero buona sotto forma di PSR che penso che tutti dovrebbero iniziare ad accettare. L'implementazione orientata agli oggetti è migliorata notevolmente in 3 anni e con il rilascio di PHP 7, non mi mancheranno più i miei giorni Java.

  • Il framework Slim ora ha ottimi documenti. Se qualcuno sta ancora usando Slim2, ha anche dei documenti decenti.
  • Per prima cosa devi guardare Slim 3 Primer. http://phpsw.uk/talks/a-slim-3-primer
  • Un blog sottile è davvero una buona cosa da leggere.
  • https://github.com/xssc/awesome-slim è un buon posto da aggiungere ai preferiti.

Treehouse e alcuni altri hanno fatto alcuni tutorial su Slim 2, come menzionato nei commenti, vale la pena guardarli. Slim 3 non ha ancora video tutorial per principianti, ma il concetto stesso è semplice. Per siti semplici, consiglierei Slim 2 a coloro che non sono programmatori molto esperti. Ma se qualcuno sta cercando di creare un'ottima applicazione / prodotto professionale, usa Slim 3.

risposta più vecchia

Sono d'accordo che non c'è abbastanza attenzione nell'area fine in termini di documentazione e guide. Non c'è ancora un grande tutorial, ma se hai buone capacità di ripresa, lascia che ti indichi l'unica cosa utile che ho trovato in rete.

Questa è una presentazione sulla struttura fine. Non è un tutorial completo, ma spiega alcune delle basi dell'utilizzo del framework. Questo mi ha aiutato quando ho trovato i telai per la prima volta.

Il video dura 43 minuti, ma ne vale la pena.

Ecco come l'ho fatto.

Allora ho letto alcuni tutorial di persone lì ho "esaminato" il codice ... Slim è davvero "sottile", solo ~ 50 file.

Controlla il tuo file Slim.php, tutto inizia da lì. Dai un'occhiata a cosa sta succedendo nel costruttore e poi guarda i metodi get / post. Se hai installato xdebug, può aiutarti a soddisfare una semplice richiesta e così via.

E come bonus aggiuntivo, imparerai molto su PHP, modelli e fondamentalmente come funziona.

PS La mia prima risposta è qui :)

Slim è uno dei microframeworks open source più popolari disponibili per PHP. È molto efficiente, veloce e facile da usare. Questo framework è ideale per lo sviluppo di applicazioni Web di piccole e medie dimensioni e consente inoltre di sviluppare rapidamente applicazioni PHP scalabili di grandi dimensioni.

Slim ha le seguenti caratteristiche (piuttosto prevedibili per un framework):

  • router facile da usare, potente e flessibile;
  • visualizzazione della visualizzazione dei modelli;
  • cookie sicuri;
  • Cache HTTP;
  • facilità di gestione degli errori e debugging;
  • facilità di personalizzazione.

Requisiti

Questa guida mostrerà come installare e configurare Slim su un server virtuale dedicato. Seguendo tutte le istruzioni qui delineate, avrai un framework completamente configurato e pronto all'uso con una struttura di cartelle in cui posizionare il tuo progetto.

Se l'applicazione che stai sviluppando non necessita di MySQL, non devi installarlo. Come minimo, è necessario un server Web Apache (con il modulo Mod_Rewrite) e PHP 5.3+.

Installazione rapida dei requisiti

Passaggio 1: installazione di Apache

apt-get update
apt-get install apache2

Passaggio 2: installazione di PHP

apt-get install php5 libapache2-mod-php5 php5-mcrypt

3: attivazione di mod_rewrite

4: Modifica del file di configurazione Apache

NEL config file Apache deve modificare AllowOverride None in AllowOverride All. A seconda delle impostazioni del server, questo file potrebbe trovarsi in:

  • /etc/apache2/apache2.conf
  • / etc / apache2 / sites-enabled / 000-default
  • / etc / apache2 / sites-available / default

Nel file di configurazione, trova una sezione simile a questa:



AllowOverride Nessuno
Richiedi tutto concesso

Modificalo come segue e salva le modifiche:


Indici delle opzioni FollowSymLinks
AllowOverride All
Richiedi tutto concesso

5: riavvio di Apache

riavviare il servizio apache2

Installazione di Slim

Il processo di installazione del framework Slim consiste in tre passaggi:

  • decompressione dei file zip;
  • copiare Slim Framework in un luogo pubblico.
  • 1: Caricamento Slim

    Puoi scaricare Slim Framework utilizzando il comando:

    wget https://github.com/codeguy/Slim/zipball/master

    Questo comando estrarrà l'archivio del framework e lo salverà nella directory corrente con il nome del master.

    2: decomprimere il file zip

    Il contenuto del file zip può essere estratto utilizzando il seguente comando:

    decomprimere master -d ./

    Nota: se ricevi un messaggio che lo strumento di decompressione non installato, può essere installato utilizzando il comando apt-get install unzip e quindi eseguire nuovamente il comando precedente.

    Questo comando estrarrà i file in una cartella chiamata codeguy-Slim-3a2ac72, che contiene una cartella denominata Slim, la cartella del framework.

    3: copiare lo Slim Framework in un luogo pubblico

    Ora è necessario copiare la cartella codeguy-Slim-3a2ac72 / Slim in un luogo pubblico del sistema (ad esempio, in / usr / local / Slim), da cui il framework Slim sarà disponibile per tutti i progetti su questo server che ne hanno bisogno. Ciò eviterà la duplicazione e preverrà eventuali problemi di manutenzione che potrebbero derivare da programmi duplicati.

    Copia la cartella utilizzando il seguente comando:

    cp -r ./codeguy-Slim-3a2ac72/Slim / usr / local / Slim

    Nota: Il nome della cartella estratta (in questo caso codeguy-Slim-3a2ac72) potrebbe essere leggermente diverso se caricate una versione diversa del framework. Assicurati che il comando contenga il nome della cartella corretto.

    Fatto ciò, qualsiasi progetto che utilizza Slim Framework sarà in grado di accedervi.

    Importante! Molte guide consigliano di installare il framework nella cartella condivisa / document root (ad esempio, / var / www / Slim). Ricorda: l'installazione dei file dell'infrastruttura all'esterno della cartella condivisa radice / document (come fatto in questo manuale) consente di proteggere leggermente l'applicazione, poiché i file del framework non saranno disponibili nel browser.

    Sviluppo del progetto Sottile

    In genere, un progetto Slim è costituito da tre directory principali:

    1. Directory del framework Slim.

    Contiene i file del framework (la directory che è stata copiata nella sezione precedente).

    1. Directory del progetto.

    Questa directory contiene i file di progetto (router, viste, modelli, ecc.). Essendo un microframework, Slim non applica alcuna struttura di progetto specifica. Ciò significa che lo sviluppatore può strutturare in modo indipendente i file di progetto in qualsiasi modo conveniente per lui. Ciò è particolarmente utile se lo sviluppatore è già abituato a una struttura di cartelle specifica.

    Questa directory può essere posizionata ovunque sul server; l'unica condizione: idealmente, non dovrebbe essere situato in un luogo accessibile dalla rete. Può essere posizionato in / usr / local o nella cartella home. Ad esempio, se il progetto si trova nella cartella HelloSlim, tale cartella può essere collocata in / usr / local / HelloSlim o ~ / HelloSlim.

    I file in questa cartella possono essere individuati come segue:

    HelloSlim
    | - Percorsi
    | | - route1.php
    | | - route2.php
    | - Modelli
    | | - model1.php
    | | - model2.php
    | - Viste
    | | - footer.php
    | | - header.php
    | | - sidebar.php
    | | - view1.php
    | | - view2.php
    | - Classe
    | | - class1.php
    | | - class2.php
    | - routes.php // contiene le istruzioni "include" per tutte le rotte nella cartella "Routes"
    | - includes.php // contiene le istruzioni "include" per tutti i modelli / classi nelle cartelle "Models / Class"

    Questa struttura di cartelle può essere creata utilizzando i seguenti comandi:

    mkdir / usr / local / HelloSlim
    mkdir / usr / local / HelloSlim / Routes
    mkdir / usr / local / HelloSlim / Models
    mkdir / usr / local / HelloSlim / Views
    mkdir / usr / local / HelloSlim / Class

    Nota: non è necessario utilizzare questa struttura di cartelle; può essere modificato in base alle esigenze del progetto o dello sviluppatore.

    1. Radice del documento o cartella condivisa.

    Questa è una cartella accessibile dal Web (di solito si trova in / var / www). Contiene solo due file relativi a Slim:

    • index.php
    • .htaccess

    Questa cartella contiene anche tutti gli script file grafici e stili di progetto. Per evitare di "ingombrare" la cartella, è possibile creare script, stili e directory di immagini separati per memorizzare i file corrispondenti.

    Ecco un esempio della struttura della cartella principale del documento:

    Radice documento (ad es. / Var / www /)
    | - script
    | | - jquery.min.js
    | | - custom.js
    | - stili
    | | - style.css
    | | - bootstrap.min.css
    | - immagini
    | | - logo.png
    | | - banner.jpg
    | - .htaccess
    | - index.php

    Contenuto del file

    Supponiamo che il progetto abbia la struttura data sopra; in questo caso, è necessario compilare i file .htaccess e index.php (nella root del documento, la directory principale del sito) come segue:

    .htaccess

    RewriteEngine On


    index.php



    richiedono "$ projectDir / includes.php"; // include il file che contiene tutti gli include relativi al progetto
    $ app \u003d nuovo \\ Slim \\ Slim (array (
    "templates.path" \u003d\u003e "/ usr / local / HelloSlim / Views"


    $ app-\u003e run (); // carica l'applicazione

    Supponendo che il progetto sia organizzato secondo la struttura di cartelle definita nella sezione precedente, i file routes.php e includes.php (nella directory del progetto) dovrebbero avere il seguente contenuto:

    require "/usr/local/HelloSlim/Routes/route1.php";
    require "/usr/local/HelloSlim/Routes/route2.php";

    Nota: Invece di aggiungere altri file di percorso, puoi aggiungere percorsi direttamente a questo file. Tuttavia, la definizione di percorsi in file separati e raggruppati in modo logico semplificherà la manutenzione del progetto.

    include.php

    require "/usr/local/HelloSlim/Class/class1.php";
    require "/usr/local/HelloSlim/Class/class2.php";
    require "/usr/local/HelloSlim/Models/model1.php";
    require "/usr/local/HelloSlim/Models/model2.php";

    Applicazione di esempio Sottile

    Ora puoi iniziare a creare una semplice applicazione che:

    • gestisce le rotte statiche (GET & POST);
    • gestisce percorsi dinamici;
    • utilizza le visualizzazioni.

    Nota: Questa applicazione di esempio presuppone che il framework Slim sia stato distribuito secondo le istruzioni del tutorial.

    Innanzitutto, è necessario delineare i requisiti di questa applicazione di esempio:

    Questo progetto richiede i seguenti file nella cartella dell'applicazione (/ usr / local / HelloSlim /):

    HelloSlim
    | - Percorsi
    | | - getRoutes.php
    | | - postRoutes.php
    | - Viste
    | | - footer.php
    | | - header.php
    | | - ciao.php
    | | - greet.php
    | - routes.php

    Di seguito è riportato come funzionerà la cartella condivisa.

    Ecco un esempio di struttura della radice del documento:

    Radice documento (ad es. / Var / www /)
    | - .htaccess
    | - index.php

    Ora devi compilare questi file come segue:

    1. /var/www/.htaccess

    RewriteEngine On
    RewriteCond% (REQUEST_FILENAME)! -F
    RewriteRule ^ index.php

    2. /var/www/index.php

    require "/usr/local/Slim/Slim.php"; // include il framework nel progetto
    \\ Slim \\ Slim :: registerAutoloader (); // registra il caricatore automatico
    $ projectDir \u003d "/ usr / local / HelloSlim"; // definisce la directory contenente i file di progetto
    $ app \u003d nuovo \\ Slim \\ Slim (array (
    "templates.path" \u003d\u003e "/ usr / local / HelloSlim / Views"
    )); // crea un'istanza di un nuovo oggetto Framework e definisce il percorso della cartella che contiene le viste per questo progetto
    richiedono "$ projectDir / routes.php"; // include il file che contiene tutte le rotte / inclusioni di rotte
    $ app-\u003e run (); // carica l'applicazione

    3. /usr/local/HelloSlim/Routes/getRoutes.php

    $ app-\u003e get ("/", function () (
    echo "Questa è una semplice pagina iniziale";
    });
    // Quanto segue gestisce qualsiasi richiesta alla route / hello
    $ app-\u003e get ("/ hello", function () use ($ app) (
    // la seguente istruzione richiama e mostra la vista hello.php
    $ app-\u003e render ("ciao.php");
    });
    // Quanto segue gestisce tutte le richieste dinamiche alle rotte / hello / NAME (come / hello / world)
    $ app-\u003e get ("/ hello /: name", funzione ($ name) usa ($ app) (
    // la seguente istruzione richiama e mostra la vista hello.php. Passa anche la variabile $ name in un array in modo che la vista possa usarla.
    $ app-\u003e render ("ciao.php", array ("name" \u003d\u003e $ name));
    });

    4. /usr/local/HelloSlim/Routes/postRoutes.php

    // Quanto segue gestisce le richieste POST inviate alla route / greet
    $ app-\u003e post ("/ salutare", function () usa ($ app) (
    // La seguente istruzione controlla se "nome" è stato POST. In caso affermativo, assegna il valore alla variabile $ name. Se non è stato impostato, assegna una stringa vuota.
    $ name \u003d (null! \u003d\u003d $ app-\u003e request-\u003e post ("name"))? $ app-\u003e request-\u003e post ("name"): "";
    // La seguente istruzione controlla se "saluto" è stato POST. In caso affermativo, assegna il valore alla variabile $ greeting. Se non è stato impostato, assegna una stringa vuota.
    $ saluto \u003d (null! \u003d\u003d $ app-\u003e richiesta-\u003e post ("saluto"))? $ app-\u003e richiesta-\u003e post ("saluto"): "";
    // la seguente istruzione richiama e mostra la vista "greet.php". Passa anche le variabili $ name e $ greeting in un array in modo che la vista possa usarle.
    $ app-\u003e render ("greet.php", array (
    "name" \u003d\u003e $ name,
    "saluto" \u003d\u003e $ saluto
    ));
    });

    5. /usr/local/HelloSlim/Views/footer.php

    Avviso sul copyright ...

    6. /usr/local/HelloSlim/Views/header.php




    Esempio di applicazione sottile

    7. /usr/local/HelloSlim/Views/hello.php

    ***

    ***

    Ciao


    LA CAMPANA

    C'è chi ha letto questa notizia prima di te.
    Iscriviti per ricevere gli ultimi articoli.
    E-mail
    Nome
    Cognome
    Come vuoi leggere The Bell
    Niente spam