Advertisement
  1. Code
  2. Laravel 5

Τι Είναι τα Πακέτα Laravel?

Scroll to top
Read Time: 6 min

Greek (ελληνικά) translation by Katerina Katapodi (you can also view the original English article)

Ως δημιουργός ΡΗΡ, πιθανόν να ενδιαφέρεστε να εργαστείτε με πλαίσια εργασίας. Τα Πλαίσια Εργασίας προσπαθούν να κάνουν την διαδικασία της ανάπτυξης πιο εύκολη απλοποιώντας τις απλές πρακτικές που χρησιμοποιούνται στην πλειονότητα των πρότζεκτ που σχεδιάζονται στο διαδίκτυο, όπως πακέτα, σχέδια, πρόσθετα και ακόμα συνθετικά(CakePHP).

Ίσως κατά την διάρκεια της διαδικασίας δημιουργίας/ανάπτυξης, να νοιώθετε ότι βρίσκετε ξανά την βάση δημιουργίας, όπως η δημιουργία μιας εφαρμογής (ενός προγράμματος) Πιστοποίησης ή Captcha.   Σε αυτή τη περίπτωση, πρέπει να δημιουργήσετε ένα πακέτο που θα απλοποιήσει και θα καταστήσει την ανάπτυξη της εφαρμογής (app), ταχύτερη και ευκολότερη.

Υπάρχουν δύο είδη πακέτων; άλλα είναι αυτοτελή, δηλαδή ανεξάρτητα από το πλαίσιο εργασίας και άλλα είναι για ένα ειδικό πλαίσιο εργασίας.  Αυτό το σεμινάριο ασχολείται αποκλειστικά με τα πακέτα Laravel. 

Πριν την δημιουργία ενός πακέτου πρέπει να γνωρίζετε για τα πακέτα δια-χείρησης. To PEAR είναι ένα πολύ γνωστό πακέτο διαχείρησης, που αν και διαθέσιμο, χρησιμοποιείται σπάνια.  Γιατί? Σας ανάγκασε να εγκαταστήσετε ένα ευρύ σύστημα πακέτων, παρά μια βάση με πρότζεκτ-ανά πρότζεκτ. Το Composer (Συνθέτης) έγινε ο διάδοχος του PEAR.

Τι Είναι τα Πακέτα Laravel?

Μια από τις παραμέτρους για την διαβάθμιση δυναμικού πλαισίου εργασίας είναι πώς ο σχεδιαστής αναδιανέμει χρήσιμα πακέτα με κωδικό.  Αυτό επιτρέπει στους δημιουργούς (σχεδιαστές) να συνοψίζουν τις εφαρμογές (apps) σε διάφορα πακέτα μικρότερων εφαρμογών.

Μάλιστα, τα πακέτα προσφέρουν έναν υπέροχο τρόπο για να ταξινομήσεις τον σχετικό κωδικό. Τα πακέτα μοιάζουν πολύ με τα ''Συνθετικά.'' Είναι σημαντικό να σημειώσουμε ότι ο αρχικός κωδικός του Laravel είναι ένα ''πακέτο'', που ο Taylor Otwell ονομάζει DEFAULT_BUNDLE.

Ένα μεγάλο πλεονέκτημα των πακέτων Laravel είναι ότι επιτρέπουν την πρόσβαση σε όλα τα χαρακτηριστικά που προσφέρει το πλαίσιο εργασίας στην βασική του εφαρμογή, περιλαμβάνοντας προγραμματισμό, συγχωνεύσεις, τεστ, όψεις και πολλά άλλα χρήσιμα χαρακτηριστικά.   Ένα άλλο σημαντικό πλεονέκτημα ενός πακέτου (Laravel)είναι η αρχή DRY (μην επαναλαμβάνεις τον εαυτό σου).  Δημιουργώντας ένα πακέτο για κωδικό που χρησιμοποιείς συχνά, αποθηκεύεις βοηθήματα και βελτιώνεις την απόδοση της εφαρμογής σου.(app)

Τώρα ας συστήσουμε μερικά χρήσιμα πακέτα Laravel.  Κάποια από τα πακέτα που έχω χρησιμοποιήσει περιέχουν:

  • Generators: Ένα από τα πράγματα που μου άρεσαν από το CakePHP ήταν το χαρακτηριστικό του Bake.  Αυτό είναι το πιο σχετικό πράγμα που βρήκα σε ένα άλλο πλαίσιο εργασίας. 
  • Ardent: Έξυπνα μοντέλα αυτο-επικύρωσης για το Εύγλωττο ORM.  
  • IDE helper: Αυτό το πακέτο ψάχνει να διορθώσει το πρόβλημα της αυτο-ολοκλήρωσης του κωδικού στο PhpStorm δημιουργώντας έναν φάκελλο βοήθημα docblock από το οποίο το IDE μπορεί να πάρει υποδείξεις.
  • Sayakb: Σας παρέχει μια σημαντική εφαρμογή captcha. 
  • Behat : Μια λύση για να τεστάρετε την εφαρμογή σας χρησιμοποιώντας την μεθοδολογία BDD.
  • Artdarek: Ένα σπουδαίο εργαλείο περιβολής (''wrapper'')OAuth 
  • Mcamara: Εύκολη τοπικοποίηση i18n για το πρόγραμμα σας Laravel. 

Μπορείτε να βρείτε την δυνατότητα πακεταρίσματος που χρειάζεστε στο packalyst.  To Packalyst δημιουργεί μια απλή εγγραφή και κοινωνικά πακέτα για το Laravel. 

Πώς να Κατασκευάσετε το Δικό σας Πακέτο Laravel

Δημιουργείστε ένα απλό πακέτο πιστοποίησης για το Laravel 5.0 Για να το κάνετε αυτό, πρώτα από όλα χρειάζεστε έναν φάκελλο composer.json για το νέο σας πακέτο:

1
{
2
    "name": "alireza/myauth",
3
    "description": "How create your laravel 5 package",
4
    "license": "MIT",
5
    "authors": [
6
        {
7
            "name": "Alireza Rahmani khalili",
8
            "email": "Alirezarahmani@live.com"
9
        }
10
    ],
11
    "minimum-stability": "dev",
12
    "require": {
13
        "laravel/framework": "~5.0"
14
    },
15
    "autoload": {
16
        "psr-4": {
17
            "Alireza\\Authentication\\": "src/"
18
        }
19
    }
20
}

Η τάξη του Παρόχου Υπηρεσίας είναι απλά ο φάκελλος που τα βάζει όλα σωστά για το πακέτο.  Εδώ είναι το πώς θα έπρεπε να είναι ο Πάροχος Υπηρεσίας σ΄αυτό το σημείο, στο src/MyAuthServiceProvider.php:

1
namespace Alireza\Authentication;
2
use Illuminate\Support\ServiceProvider;
3
4
class MyAuthServiceProvider extends ServiceProvider {
5
6
    /**

7
     * Indicates if loading of the provider is deferred.

8
     *

9
     * @var bool

10
     */
11
    protected $defer = false;
12
13
    /**

14
     * Bootstrap the application events.

15
     *

16
     * @return void

17
     */
18
    public function boot()
19
    {
20
    }
21
    /**

22
     * Register the service provider.

23
     *

24
     * @return void

25
     */
26
    public function register()
27
    {
28
29
    }
30
    /**

31
     * Get the services provided by the provider.

32
     *

33
     * @return array

34
     */
35
    public function provides()
36
    {
37
        return [];
38
    }
39
40
}

Προσθέσετε τον πάροχο υπηρεσίας στο config/app.php

1
'Alireza\Authentication\MyAuthServiceProvider ::class',

Τώρα το Laravel είναι ενήμερο για το πακέτο. Μπορείτε να ρωτήσετε για το ''alias''. Μπορείτε να ρωτήσετε για το ''alias'' και γιατί δεν το προσθέτω στο app.php μου.  Προσωπικά, προσθέτω το alias στη μέθοδο εγγραφής της τάξης του παρόχου υπηρεσίας αντί να το προσθέσω χειροκίνητα στον φάκελλο διαμόρφωσης του Laravel.  Θα το ρυθμίσω αυτό αργότερα.  Τώρα δημιουργήστε μια απλή τάξη ΡΗΡ που ονομάζεται MyAuth στο src/MyAuth.pho:

1
namespace Alireza\Authentication;
2
3
use Config, Request, Session, Hash;
4
use App\User;
5
6
Class MyAuth
7
{
8
    public $redirect_login = '/users/home';
9
    public $redirect_logout = '/users/logout';
10
    public $login = '/user/login';
11
    protected $data;
12
13
    public function __construct()
14
    {
15
        if (Request::isMethod('post')) //Get post inputs

16
            $this->data = array('username' => Input::get('username'), 'password' => Input::get('password'));
17
    }
18
19
    public function login($data = false)
20
    {
21
        $this->data = $data;
22
23
        if ($this->data && !is_array($this->data))
24
            return redirect($this->login)->with('message', 'sorry no array to log-in manually')->send();
25
26
        if ($this->data && !Session::has('user')) {
27
            $result = User::Where(['email' => $this->data['username']
28
            ])
29
                ->first();
30
31
            if ($result && Hash::check($this->data['password'], $result->password)) {
32
                Session::put('user', $result);
33
                return Redirect($this->redirect_login)->with('message', 'Welcome log-in succeeded ')->send();
34
            }
35
            Session::flush();
36
            return redirect($this->login)->with('message', 'Login Failed, wrong username or password')->send();
37
        }
38
    }
39
40
    public function logout()
41
    {
42
        Session::flush();
43
        return redirect($this->login)->with('message', 'logout succeeded')->send();
44
    }
45
46
}
47

Η τάξη πιστοποίησης πρέπει να ενωθεί με το Laravel loC Container στον πάροχο (προμηθευτή) υπηρεσιών του πακέτου.  Πριν απ'αυτό, δημιουργήστε μια τάξη Πρόσοψης (Εικονική τάξη) που θα επιτρέπει χρήση των μεθόδων τάξης δίχως να χρειαστεί να δημιουργήσει ένα νέο παράδειγμα, καθώς και άλλα οφέλη που αναφέρθηκαν νωρίτερα.  Ακριβώς όπως η τάξη MyAuth δημιούργησε το νέο ευρετήριο Facades στο ευρετήριο Facades, δημιουργήστε μια νέα τάξη ΡΗΡ, και ονομάστε την src/MyAuthFacade.php:

1
namespace Alireza\Authentication;
2
use Illuminate\Support\Facades\Facade;
3
class MyAuthFacade extends Facade
4
{
5
    protected static function getFacadeAccessor()
6
    {
7
        return 'MyAuth';
8
    }
9
}

Μετά από αυτό, το μόνο πράγμα που μένει είναι η εκκίνηση του πακέτου, η έναρξη λειτουργίας.Το δικό μου μοιάζει ως εξής: Μετά από αυτό, το μόνο πράγμα που μένει είναι η εκκίνηση του πακέτου. Το δικό μου μοιάζει:

1
   public function register()
2
    {
3
        $this->app['MyAuth'] = $this->app->share(function($app)
4
        {
5
            return new MyAuth;
6
        });
7
        $this->app->booting(function()
8
        {
9
            $loader = \Illuminate\Foundation\AliasLoader::getInstance();
10
            $loader->alias('MyAuth', 'Alireza\Authentication\MyAuthFacade');
11
        });
12
    }

Όπως μπορείτε να δείτε, έχω συνδέσει την τάξη μου Myauth με το loC Container.   Τώρα είναι εύκολο να χρησιμοποιήσω την τάξη μου MyAuth:

1
MyAuth::login(['username'=>'Alirezarahmani@live.com','password'=>'test']);

Αυτό θα πρέπει να παράγει το μήνυμα, Welcome log-in succeeded.  Αν επιθυμείτε, μπορείτε τώρα να εγγράψετε το πακέτο σας στο Packagist.  To πακέτο MyAuth έχει τώρα εγγραφεί και μπορεί εύκολα να συμπεριληφθεί στο Laravel μέσω της εντολής του δημιουργού (συνθέτη); composer require ''alireza/myauth''.

Συμπέρασμα 

Αν ψάχνετε για ένα παράδειγμα ενός δημοφιλούς ολοκληρωμένου πακέτου Laravel, μπορείτε να δείτε στο TerranetAdmin για Laravel. 

Αυτή ήταν μια μικρή επισκόπηση για το πώς να δημιουργήσετε ένα πακέτο Laravel 5.  Όπως μπορείτε να δείτε, η δημιουργία του πακέτου είναι εύκολη, και θα μπορούσε να είναι σημαντικό εργαλείο για την απλοποίηση και επιτάχυνση της διαδικασίας ανάπτυξης (δημιουργίας). 

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.