Dengan populariti Internet mudah alih dan perkhidmatan muzik, pemain muzik telah menjadi bahagian yang amat diperlukan dalam kehidupan kita. Bagi pembangun yang ingin membangunkan pemain muzik sendiri, menggunakan rangka kerja PHP Symfony akan menjadi pilihan yang cekap.
Symfony ialah rangka kerja PHP berdasarkan corak MVC Ia menyediakan banyak alatan dan komponen yang cekap untuk membantu pembangun membina aplikasi web berkualiti tinggi dengan cepat. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Symfony untuk membina pemain muzik yang cekap.
Pemain muzik perlu mengurus maklumat metadata fail muzik dengan betul, seperti nama album, nama lagu, nama artis, dsb. Symfony boleh menggunakan Doctrine ORM untuk mengurus data. ORM bermaksud "Pemetaan Hubungan Objek", yang boleh memetakan data dalam pangkalan data ke dalam objek PHP, dan objek PHP boleh digunakan untuk melaksanakan operasi pangkalan data.
Dalam Symfony, gunakan Komposer untuk memasang komponen Doktrin:
composer require symfony/orm-pack
Dalam Doktrin, anda boleh menggunakan anotasi atau fail XML untuk mentakrifkan atribut dan hubungan entiti (Entiti). Berikut ialah contoh entiti:
<?php namespace AppEntity; use DoctrineORMMapping as ORM; /** * @ORMEntity(repositoryClass="AppRepositorySongRepository") */ class Song { /** * @ORMId() * @ORMGeneratedValue() * @ORMColumn(type="integer") */ private $id; /** * @ORMColumn(type="string", length=255) */ private $title; /** * @ORMColumn(type="string", length=255) */ private $artist; /** * @ORMColumn(type="string", length=255) */ private $album; // 其他属性 /** * @ORMColumn(type="datetime") */ private $uploadedAt; // getter和setter方法 }
Dalam entiti ini, kami mentakrifkan atribut lagu, seperti tajuk, artis, album, dsb. Kami juga menentukan atribut masa muat naik, yang membantu kami mengisih lagu.
Dalam Symfony, anda boleh membuat dan mengemas kini jadual pangkalan data menggunakan alat baris arahan:
php bin/console doctrine:schema:create php bin/console doctrine:schema:update --force
Dalam pengawal, kita boleh mendapatkan senarai lagu daripada pangkalan data dan menghantarnya ke dalam templat Twig Buat a pembentangan.
<?php namespace AppController; use AppEntitySong; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentRoutingAnnotationRoute; class MusicController extends AbstractController { /** * @Route("/music", name="music") */ public function index() { $songs = $this->getDoctrine() ->getRepository(Song::class) ->findAll(); return $this->render('music/index.html.twig', [ 'songs' => $songs, ]); } }
Dalam templat, anda boleh menggunakan penyataan dan pembolehubah gelung Twig untuk memaparkan senarai muzik. Berikut ialah contoh mudah:
{% extends 'base.html.twig' %} {% block body %} <h1>My Music Player</h1> <ul> {% for song in songs %} <li>{{ song.title }} - {{ song.artist }} ({{ song.album }})</li> {% endfor %} </ul> {% endblock %}
Ini akan mendapatkan lagu daripada pangkalan data dan memaparkannya dalam senarai.
Menggunakan Symfony, kita boleh menetapkan objek respons (Respons) dalam pengawal dan mengeluarkan kandungan fail muzik sebagai aliran respons.
<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAnnotationRoute; class MusicController extends AbstractController { /** * @Route("/music/{id}/file", name="music_file") */ public function file(Request $request, $id) { $song = $this->getDoctrine() ->getRepository(Song::class) ->find($id); $path = $this->getParameter('music_directory').'/'.$song->getPath(); $response = new Response(); $response->headers->set('Content-Type', 'audio/mpeg'); $response->headers->set('Content-Disposition', 'inline; filename="'.basename($path).'"'); $response->headers->set('Content-Length', filesize($path)); $response->setContent(file_get_contents($path)); return $response; } }
Dalam pengawal ini, kami mendapat lagu daripada pangkalan data dan mengeluarkan kandungan fail muziknya sebagai aliran respons. Kami juga menetapkan pengepala Jenis Kandungan dan Pelupusan Kandungan bagi respons, serta pengepala Panjang Kandungan.
Perhatikan bahawa laluan fail muzik di sini diperoleh daripada parameter Symfony (Parameter), kita boleh menyimpannya dalam fail parameter untuk menggunakan laluan berbeza dalam persekitaran yang berbeza.
Dalam Twig, kami boleh menghantar URL fail muzik ke dalam tag audio untuk memainkan muzik dalam penyemak imbas.
{% extends 'base.html.twig' %} {% block body %} <h1>My Music Player</h1> <ul> {% for song in songs %} <li> {{ song.title }} - {{ song.artist }} ({{ song.album }}) <audio controls> <source src="{{ path('music_file', { 'id': song.id }) }}" type="audio/mpeg"> </audio> </li> {% endfor %} </ul> {% endblock %}
Di tempat ini, kami menggunakan fungsi laluan untuk mendapatkan URL fail muzik daripada laluan dan menggunakannya sebagai nilai atribut src tag sumber.
Selain daripada pengurusan muzik asas dan fungsi main balik, kami juga boleh menambah fungsi lain pada pemain muzik, seperti carian, pengurusan senarai main, paparan lirik, dsb. Symfony menyediakan banyak komponen boleh guna semula, seperti enjin carian, borang dan sambungan Twig, yang boleh membantu kami membangunkan fungsi ini dengan cepat.
Dalam artikel ini, kami memperkenalkan cara menggunakan rangka kerja Symfony untuk membina pemain muzik yang cekap dengan cepat, menggunakan Doctrine ORM dalam Symfony untuk pengurusan data, menggunakan Twig untuk pemaparan templat dan menggunakan objek tindak balas Symfony dalam permainan menyemak imbas muzik pada peranti. Melalui contoh ini, pembangun boleh memahami dengan cepat cara menggunakan Symfony untuk membina aplikasi web dan mendapatkan sedikit inspirasi daripada mereka untuk digunakan semasa membangunkan pemain muzik.
Atas ialah kandungan terperinci Membangunkan pemain muzik yang cekap menggunakan rangka kerja PHP Symfony. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!