Ενα πλαίσιο PHP πλήρης στοίβας, που παρέχεται σαν επέκταση C

Η καινοτόμα αρχιτεκτονική του Phalcon, το κάνει το γρηγορότερο πλαίσιο PHP που κατασκευάστηκε ποτέ!

Οι προγραμματιστές δεν χρειάζεται να γνωρίζουν τη γλώσσα C για να χρησιμοποιήσουν το Phalcon. Το interface είναι εκτεθειμένo ως classes PHP κάτω από το namespace Phalcon, έτοιμο για χρήση.
Δυνατότητες
  • Χαμηλή επιβάρυνση
  • ORM
  • PHQL
  • Συναλλαγές
  • Μνήμη cache
  • Απόψεις και frontend
  • Κινητήρας Πρότυπων
  • Μηχανή Προτύπων (Volt)
  • i18n
  • Δημιουργία Φόρμων
  • Flash μηνύματα
Υποστηρίζεται από

  • Χαμηλή επιβάρυνση
    Χαμηλή κατανάλωση μνήμης και CPU σε σύγκριση με παραδισιακές στοίβες
  • MVC & HMVC
    Λειτουργικές μονάδες, συστατικά, μοντέλα, απόψεις και ελεγκτές
  • Dependency Injection
    Dependency Injection και Τοποθεσία υπηρεσιών και είναι το ίδιο ένα δοχείο για αυτούς.
  • Rest
    Στην περίπτωση αυτή, μπορείτε να χρησιμοποιήσετε είτε μια εφαρμογή micro ή πλήρης στοίβας για να πετύχετε τον στόχο σας. Επιπλέον, ένα ισχυρό σετ βοηθών HTTP.
  • Συσκευή αυτόματης φόρτωσης
    Provides the autoloading mechanism of PHP classes following PSR-4. Παρέχει μηχανισμό αυτόματης φόρτωσης τάξεων PHP ακολουθόντας το PSR-4.
  • Δρομολογητής
    Το Phalcon\Mvc\Router παρέχει προηγμένες δυνατότητες δρομολόγησης.
Χαμηλή επιβάρυνση
PHP C-επέκταση (Phalcon)
  • Οι επεκτάσεις Zephir/C φορτώνονται με το PHP μια φορά μόνο, κατά τη διαδικασία εκκίνησης τού δαίμονα διακομιστή web
  • Κλάσεις και οι λειτουργίες που παρέχονται από την επέκταση είναι έτοιμες προς χρήση για οποιαδήποτε εφαρμογή
  • Ο κώδικας έχει μεταγλωττιστεί και δεν ερμηνεύεται, επειδή είναι ήδη μεταγλωτισμένο σε μια συγκεκριμένη πλατφόρμα και επεξεργαστή
  • Χάρη στη χαμηλού επιπέδου αρχιτεκτονική και βελτιστοποιήσεις το Phalcon παρέχει τη χαμηλότερη επιβάρυνση για εφαρμογές που βασίζονται στο MVC
MVC
Δημιουργήστε ενιαίες και πολυ-λειτουργικές εφαρμογές με ευκολία και ευχαρίστηση. Χρησιμοποιώντας το σχέδιο αρχείων δομής και μοτίβες που ήδη γνωρίζετε.
                        
single/
    app/
        controllers/
        models/
        views/
    public/
        css/
        img/
        js/

                        
                    
                        
multiple/
     apps/
       frontend/
          controllers/
          models/
          views/
          Module.php
       backend/
          controllers/
          models/
          views/
          Module.php
       public/
       ../
                        
                    
Dependency Injection
Το Phalcon είναι χτισμένο σε ένα ισχυρό και εύκολα κατανοητό πρότυπο που ονομάζεται Dependency Injection. Προετοιμαστε ή ορίστε τις υπηρεσίες μόνο μια φορά - και χρησιμοποιήστε τες οπουδήποτε σην εφαρμογή σας.
                        
// Δημιουργήστε το κοντείνερ του Dependency Injector
$di = new Phalcon\DI();

// Εγγράψετε τάξεις, συναρτήσεις και εξαρτήματα
$di->set("request", new Phalcon\Http\Request());

..

// Χρησιμοποιήστε το οπουδήποτε θέλετε στον κώδικα σας
$request = $di->getShared('request');
                        
                    
Υπηρεσιες Rest
Γράψιμο υπόλοιπο διακομιστών και εφαρμογών δεν ήταν ποτέ ευκολότερο. Κανένα στερεότυπο. Απλές υπηρεσίες που χωρούνε σε ένα αρχείο.
                        
use Phalcon\Mvc\Micro;

$app = new Micro();

// Επιστρέφοντας δεδομένα σε μορφή JSON
$app->get(
    '/check/status',
    function () {
        return $this
            ->response
            ->setJsonContent(
                [
                    'status' => 'important',
                ]
            )
        ;
    }
);

$app->handle();
                        
                    
Συσκευή αυτόματης φόρτωσης
Δημιουργήστε μητρώο ονομάτων (namespaces), προθέματα, καταλόγους ή τάξεις. Επωφεληθείτε από τα γεγονότα του autoloader και διατηρήστε πλήρη έλεγχο πάνω από ποια αρχεία έχουν φορτωθεί και από πού.
                        
use Phalcon\Loader;

// Δημιουργεί τον autoloader
$loader = new Loader();

// Εγγράψτε μητρώο ονομάτων
$loader->registerNamespaces(
    [
       'Example\Base'    => 'vendor/example/base/',
       'Example\Adapter' => 'vendor/example/adapter/',
       'Example'         => 'vendor/example/',
    ]
);

// Εγγράψτε autoloader
$loader->register();
                        
                    
Δρομολογητής
Δρομολόγηση δεδομένου όπως πρέπει. Τίποτα περισσότερο. Τίποτα λιγότερο.
                        
// Δημιουργήστε το διαδρομέα
$router = new \Phalcon\Mvc\Router();

// Καθορίσετε μια διαδρομή
$router->add(
   '/admin/users/my-profile',
   [
       'controller' => 'users',
       'action'     => 'profile',
   ]
);
                        
                    
  • ORM
    Αντικείμενο Σχεσιακής Χαρτογράφησης
  • PHQL
    Η ισχυρή και ασφαλή Phalcon Query Language, PHQL
  • Συναλλαγές
    Οι συναλλαγές στο Phalcon σας δλινουν τη δυνατότητα να διατηρήσετε την ακεραιότητα των δεδομένων σας ασφαλή.
  • Μνήμη cache
    Βελτιώσετε την απόδοση της εφαρμογής σας με τις πολλές υπηρεσίες αποθήκευσησ προσωρινών δεδομένων που παρέχει το Phalcon
ORM
Ένα ισχυρό ORM παρέχεται από το Phalcon που σας επιτρέπει να χειριστείτε αρχεία βάσεων δεδομένων ως κλάσεις και αντικείμενα. MySQL, PostgreSQL και SQLite υποστηρίζονται αυτόματα από το Phalcon.
                        
use Invoices;
use Phalcon\Mvc\Model;

class Customers extends Model
{
    public $cst_id;

    public $cst_name;

    public function initialize()
    {
        $this->hasMany(
            'cst_id',
            Invoices::class,
            'inv_cst_id'
        );
    }
}
                        
                    
PHQL
Το PHQL είναι μια object-oriented διάλεκτος SQL υψηλού επιπέδου, που σας επιτρέπει να γράψετε ερωτήματα χρησιμοποιώντας μια τυποποιημένη γλώσσα SQL. Το PHQL υλοποιείται ως ένα πρόγραμμα ανάλυσης (γραμμένο σε C) που μεταφράζεται στη σύνταξη του στόχου RDBMS. Για να επιτύχετε την υψηλότερη δυνατή απόδοση, το Phalcon παρέχει ένα πρόγραμμα ανάλυσης που χρησιμοποιεί την ίδια τεχνολογία όπως το SQLite. Η τεχνολογία αυτή παρέχει ένα μικρό πρόγραμμα ανάλυσης στη μνήμη που ξοδεύει πολυ λίγη μνήμη και προσφέρει ασφάλεια για νήματα επεξεργασίας.
                        
$phql  = 'SELECT * '
       . 'FROM Formula\Cars '
       . 'ORDER BY Formula\Cars.name';
$query = $manager->createQuery($phql);

$phql  = 'SELECT Formula\Cars.name '
       . 'FROM Formula\Cars '
       . 'ORDER BY Formula\Cars.name';
$query = $manager->createQuery($phql);

$phql  = 'SELECT c.name '
       . 'FROM Formula\Cars c '
       . 'ORDER BY c.name';
$query = $manager->createQuery($phql);

$phql = 'SELECT c.* '
      . 'FROM Cars AS c '
      . 'ORDER BY c.name';
$cars = $manager->executeQuery($phql);

foreach ($cars as $car) {
    echo "Name: ", $car->name, "\n";
}
                        
                    
Συναλλαγές
Όταν μια διεργασία εκτελεί πολλές λειτουργίες στη βάση δεδομένων, θα μπορούσε να είναι σημαντικό ότι κάθε βήμα έχει ολοκληρωθεί με επιτυχία, έτσι ώστε να μπορεί να διατηρηθεί η ακεραιότητα των δεδομένων. Οι συναλλαγές προσφέρουν την ικανότητα να διασφαλίσετε ότι όλες τις λειτουργίες της βάσης δεδομένων έχουν εκτελεστεί με επιτυχία πριν τα δεδομένα καταχωρηθούν στη βάση δεδομένων.
                        
use Phalcon\Mvc\Model\Transaction\Failed;
use Phalcon\Mvc\Model\Transaction\Manager;

try {

    // Δημιουργήσετε ένα manager συναλλαγών
    $manager = new Manager();

    // Ζητήστε μια συναλλαγή
    $transaction = $manager->get();

    // Λάβετς τα ρομπότς που θα διαγραφούν
    $invoices = Invoices::find(
        'inv_cst_id = 123'
    );

    foreach ($invoices as $invoice) {
        $invoice->setTransaction($transaction);
        if ($invoice->delete() == false) {
            // Λάθος - επαναφορά συναλλαγής
            foreach ($invoice->getMessages() as $message) {
                $transaction
                    ->rollback($message->getMessage());
            }
        }
    }

    // Όλα είναι εντάξει - ολοκλήρωση συναλλαγής
    $transaction->commit();

    echo "Τα ρομπότς διαγραφήκανε με επιτυχία!";

} catch (Failed $e) {
    echo "Αποτυχία, λόγος:  ", $e->getMessage();
}
                        
                    
Μνήμη cache
Το στοιχείο cache επιτρέπει την ταχύτερη πρόσβαση σε συχνά χρησιμοποιούμενα ή ήδη επεξεργασμένα δεδομένα. Υποστηρίζει πολλά backends όπως Redis, Memcached, Mongo, Files, Apc και παραπάνω
                        
use Phalcon\Cache;
use Phalcon\Cache\AdapterFactory;
use Phalcon\Storage\Serializer\SerializerFactory;

$serializerFactory = new SerializerFactory();
$adapterFactory    = new AdapterFactory($serializerFactory);

$options = [
    'defaultSerializer' => 'Json',
    'lifetime'          => 7200
];

$adapter = $adapterFactory
    ->newInstance('apcu', $options);

$cache = new Cache($adapter);
                        
                    
  • Κινητήρας Πρότυπων
    Απόψεις είναι τα στοιχεία που αντιπροσωπεύουν το περιβάλλον εργασίας του χρήστη της εφαρμογής σας
  • Μηχανή Προτύπων (Volt)
    Ενα πρότυπο κινητήρα απόψεων, εμπνευσμένο από τη Jinja αλλά χτισμένο σε C για το PHP
  • i18n
    Μεταφράστε τις εφαρμογές σας σε πολλαπλές γλώσσες εύκολα
  • Δημιουργία Φόρμων
    Δημιουργήσετε εύκολα φόρμες HTML
  • Flash μηνύματα
    Τα μυνήματα Flash χρησιμοποιούνται για την ενημερώση του χρήστη σχετικά με την κατάσταση των δράσεων.
Κινητήρας Πρότυπων
Απόψεις είναι τα στοιχεία που αντιπροσωπεύουν το περιβάλλον εργασίας του χρήστη της εφαρμογής σας. Απόψεις είναι συχνά αρχεία HTML με ενσωματωμένο PHP κώδικα που εκτελούν εργασίες οι οποίες σχετίζονται αποκλειστικά με την παρουσίαση των δεδομένων. Οι απόψεις χειρίζονται την εργασία της παροχής των δεδομένων για το πρόγραμμα περιήγησης ή άλλο εργαλείο που χρησιμοποιείται για να κάνουν αιτήσεις από την εφαρμογή σας.
                        
<html>
    <body>
    <div class='top'>
        <?php $this->partial('shared/ad_banner'); ?>
    </div>
    <div class='content'>
        <h1>Robots</h1>
        <p>
            Check out our specials for robots:
        </p>
        ...
    </div>
    <div class='footer'>
        <?php $this->partial('shared/footer'); ?>
    </div>
    </body>
</html>
                        
                    
Μηχανή Προτύπων (Volt)
Το Volt είναι μια εξαιρετικά γρήγορη και φιλική για τους σχεδιαστές templating γλώσσα γραμμένο σε Zephir/C για PHP. Σας παρέχει ένα σύνολο των βοηθών να γράφετε απόψεις εύκολα. Το Volt είναι ενσωματωμένη με άλλα στοιχεία του Phalcon, και μπορείτε να το χρησιμοποιήσετε ως ένα αυτόνομο στοιχείο στις εφαρμογές σας.
                        
{# app/views/products/show.volt #}
{% block last_products %}
{% for prod in products %}
    * Name: {{ prod.name|e }}
    {% if prod.status == 'Active' %}
       Price: {{ prod.price + prod.taxes/100}}
    {% endif  %}
{% endfor  %}
{% endblock %}
                        
                    
i18n
Το στοιχείο Phalcon\Translate βοηθά στη δημιουργία πολύγλωσσων εφαρμογών. Εφαρμογές που χρησιμοποιούν αυτό το στοιχείο, εμφανίζουν περιεχομένο σε διαφορετικές γλώσσες, βάσει της επιλεγμένης γλώσσας από το χρήστη, που υποστηρίζεται από την εφαρμογή.
// app/messages/en.php
$messages = [
    'hi'      => 'Hello',
    'bye'     => 'Good Bye',
    'hi-name' => 'Hello %name%',
    'song'    => 'This song is %song%'
];

// app/messages/es.php
$messages = [
    'hi'      => 'Hola',
    'bye'     => 'Adiós',
    'hi-name' => 'Hola %name%',
    'song'    => 'Esta canción es %song%'
];

use Phalcon\Mvc\Controller;
use Phalcon\Translate\Adapter\NativeArray;

// UserController.php
class UserController extends Controller
{
    protected function getTranslation()
    {
        // Η καλύτερη γλώσσα του προγράμματος περιήγησης
        $language = $this
            ->request
            ->getBestLanguage();

        // Ελενγχος του αρχείου μεταφρασης γλώσσας
        $fileName = 'app/messages/'
                  . $language
                  . '.php';
        if (file_exists($fileName) {
            require $fileName;
        } else {
            // Επιστροφή σε κάποια προκαθορισμένη λειτουργία
            require 'app/messages/en.php';
        }

        // Επιστρέψτε ένα αντικείμενο μετάφρασης
        return new NativeArray(
            array(
                'content' => $messages
            )
        );
    }

    public function indexAction()
    {
        $this->view->name = 'Mike';

        $this->view->t = $this
            ->getTranslation();
    }
}
// user.volt
<p><?php echo $t->_('hi'), ' ', $name; ?></p>
                        
                    
Δημιουργία Φόρμων
Κάθε στοιχείο με τη φόρμα μπορεί να αποδοθεί όπως απαιτείται από τον προγραμματιστή. Εσωτερικά, το Phalcon\Tag χρησιμοποιείται για να παράγει το σωστό HTML για κάθε στοιχείο και μπορείτε να περάσετε τα επιπλέον χαρακτηριστικά HTML ως τη δεύτερη παράμετρο του render():
                        
use Phalcon\Forms\Form;
use Phalcon\Forms\Element\Text;
use Phalcon\Forms\Element\Select;

$form = new Form();

$form->add(new Text('name'));

$form->add(new Text('telephone'));

$form->add(
    new Select(
        'telephoneType',
        array(
            'H' => 'Home',
            'C' => 'Cellphone'
        )
    )
);
                        
                    
Flash μηνύματα
Χρησιμοποιήστε τον κοινοποιητή flash να εμφανίσετε ειδοποιήσεις στους χρήστες σε μια εφαρμογή web:
                        
use Phalcon\Mvc\Controller;

class PostsController extends Controller
{
    public function saveAction()
    {
        $this->flash->error(
            'υπήρχαν σφάλματα σε αυτή τη φόρμα'
        );
        $this->flash->success(
            'ναι!, όλα είναι μια χαρά'
        );
        $this->flash->notice(
            'αυτή είναι μια παρατήρηση για τους χρήστες'
        );
        $this->flash->warning(
            'αυτή είναι απλά μια προειδοποίηση'
        );
    }
}
                        
                    
  • ACL
    Η Λίστα Ελέγχου Πρόσβασης (ACL) επιτρέπει στους χρήστες να έχουν πρόσβαση μόνο στις ενότητες που είναι εξουσιοδοτημένοι
  • Sharding
    Συνδεθείτε, αποθηκεύστε και ανακτήστε δεδομένα από πολλές βάσεις δεδομένων ταυτόχρονα
  • Crypt
    Κρυπτογράφηση/αποκρυπτογράφηση σημαντικών δεδομένων για να τα κρατήσετε ασφαλή από μη εξουσιοδοτημένα τρίτα μέρη
  • Γεγονότα
    Επεκτείνετε τα στοιχεία του πλαισίου με τη δημιουργία 'σημείων γάντζων'. Δημιουργήστε τις δικές σας εκδηλώσεις και να κάνετε την εφαρμογή σας πιο ευέλικτη και ισχυρή
ACL
Ετσι μπορεέιτε να χτίστε τη λίστα ελέγχου πρόσβασης (ACL):
                        
use Phalcon\Acl;
use Phalcon\Acl\Enum;
use Phalcon\Acl\Role;
use Phalcon\Acl\Adapter\Memory;

// Δημιουργία της ACL
$acl = new Memory();

// Η προεπιλεγμένη ενέργεια είναι DENY πρόσβαση
$acl->setDefaultAction(Enum::DENY);

// Εγγραφή δύο ρόλων, Χρήστες
// και Επισκέπτες
$roles = array(
    'users'  => new Role('Users'),
    'guests' => new Role('Guests')
);

foreach ($roles as $role) {
    $acl->addRole($role);
}
                        
                    
Sharding
Επισυνάψετε μοντέλα σε διαφορετικές βάσεις δεδομένων
                        
use Phalcon\Db\Adapter\Pdo\Mysql;
use Phalcon\Db\Adapter\Pdo\PostgreSQL;

// Αυτή η υπηρεσία επιστρέφςι μια βάση δεδομένων MySQL
$container->set(
    'dbMysql',
    function () {
        return new Mysql(
            [
                'host'     => 'localhost',
                'username' => 'root',
                'password' => 'secret',
                'dbname'   => 'tutorial',
            ]
        );
    }
);

// Αυτή η υπηρεσία επιστρέφςι μια βάση δεδομένων PostgreSQL
$container->set(
    'dbPostgres',
    function () {
        return new PostgreSQL(
            [
                'host'     => 'localhost',
                'username' => 'postgres',
                'password' => '',
                'dbname'   => 'invo',
            ]
        );
    }
);
                        
                    
Kρυπτογράφηση
Το Phalcon παρέχει κρυπτογράφηση μέσω του στοιχείου Phalcon\Crypt. Αυτή η τάξη προσφέρει απλά object-oriented περιτυλίγματα για την openssl βιβλιοθήκη κρυπτογράφησης του PHP.
                        
use Phalcon\Crypt;

$crypt = new Crypt();

$key  = 'Αυτό είναι ένα μυστικό κλειδί (32 bytes).';
$text = 'Το κείμενο που θέλετε να κρυπτογραφήσετε.';

$encrypted = $crypt->encrypt($text, $key);

echo $crypt->decrypt($encrypted, $key);
                        
                    
Διαχείριση Γεγονότων
Ενας manager γεγονότων επιτρέπει να επισυνάψουμε ακροατές σε ένα συγκεκριμένο τύπο του γεγονότος. Ο τύπος που μας ενδιαφέρει τώρα είναι 'αποστολή'. Ο ακόλουθος κώδικας φιλτράρει όλα τα συμβάντα που παράγονται από τον Αποστολέα:
                        
use Phalcon\Mvc\Dispatcher;
use Phalcon\Events\Manager;

$container->set(
    'dispatcher',
    function () {
        // Δημιουργήστε ένα manager γεγονότων
        $manager = new Manager();

        // Ακούστε για εκδηλώσεις που παράγονται στον
        // αποστολέα χρησιμοποιώντας το SecurityPlugin
        $manager->attach(
            'dispatch:beforeExecuteRoute',
            new SecurityPlugin
        );

        // Χειριστείτε εξαιρέσεις και δεν βρέθηκαν
        // εξαιρέσεις χρησιμοποιώντας το NotFoundPlugin
        $manager->attach(
            'dispatch:beforeException',
            new NotFoundPlugin
        );

        $dispatcher = new Dispatcher();

        // Εκχώρηση του διαχειριστή συμβάντων
        // στον αποστολέα
        $dispatcher
            ->setEventsManager($manager);

        return $dispatcher;
    }
);
                        
                    
Μια εφαρμογή δημοσκοπήσεων που χτίστηκε από το μηδέν σε < 15 λεπτά
Παρακολουθήστε το βίντεο επίδειξης
Ελάτε να συμμετάσχετε στην ζωντανή κοινότητά προγραμματιστών μας!
Συνεισφορές από την κοινώτητα με Επεκτάσεις, Plugins, Προσαρμογείς, VM, παραδείγματα, πηγαίος κώδικας... και περισσότερα
Συντελεστές Phalcon
Το Phalcon βελτιώνεται καθημερινά από την φανταστική μας κοινώτητα
Συνεισφέρετε