


Penjelasan terperinci tentang cara Komposer Git mencipta 'perpustakaan kelas perkhidmatan'
Feb 05, 2022 am 05:00 AMPengenalan
Saya sentiasa percaya bahawa PHP kini telah berkembang ke dalam bidang kejuruteraan. Pada masa lalu, pembangun PHP menganggap kelajuan sebagai keindahan, dan kelajuan dan skala sentiasa bercanggah. Projek PHP hari ini, terutamanya projek yang lebih besar, telah berkembang secara beransur-ansur ke tahap yang memerlukan kedua-dua kejuruteraan dan skala. Kejuruteraan kod bermakna berkembang menjadi seni bina yang semakin kompleks. Untuk seni bina yang kompleks, perkhidmatan mikro selalunya merupakan pilihan yang baik.
Saya memerlukan soalan ini dalam projek baru-baru ini. Saya perlu membangunkan perkhidmatan peta Perkhidmatan ini sudah tentu bukan dalam bentuk perpustakaan kelas yang mudah, tetapi mempunyai pangkalan data sendiri dan antara muka perkhidmatannya sendiri. Dalam kes ini, pilihan terbaik ialah penservitan. Sudah tentu, terdapat banyak cara untuk melakukan perkhidmatan, seperti Thrift, HTTP, dll. Tetapi saya menilai persekitaran jabatan semasa PHP adalah bahasa arus perdana, dan kemajuan projek saya juga agak ketat Pada pandangan saya, Thrift, HTTP dan kaedah lain semuanya menggunakan protokol rangkaian untuk mencapai penyahgandingan perkhidmatan penyelesaian. Saya fikir pendekatan ini tidak perlu apabila projek itu tidak jelas dalam keadaan kritikal. Kelemahan menggunakan penservitian protokol rangkaian ialah ia memperkenalkan kerumitan yang ketara. Kerumitan ini selalunya bermakna pelaburan dalam tenaga kerja, sumber material dan masa. Jadi saya berharap dapat menyediakan "perpustakaan kelas perkhidmatan" dalam bahasa PHP untuk pembangunan.
Apa yang saya fikirkan ialah Komposer PHP.
Pengubahsuaian Komposer
Mencipta pustaka perkhidmatan
Pertama, saya perlu menukar "perpustakaan perkhidmatan" saya daripada aplikasi Saya (bernama xxx/main1) adalah bebas Untuk kebebasan ini, saya tidak memilih untuk mencipta direktori dalam aplikasi (malah, saya terfikir untuk membuat direktori seperti Perkhidmatan). Namun, jika kod tersebut digandingkan dengan program perniagaan, saya merasakan kerana kemalasan manusia, sukar untuk mengawal diri dari awal hingga akhir dan berkeras untuk tidak menggunakan pelbagai fungsi mudah dalam aplikasi. Jadi pilihan saya adalah untuk mencipta projek baharu dalam repositori Git dan namakannya xxx/mapService.
composer.json
Kini terdapat dua projek Git (xxx/main1 dan xxx/mapService saya menambah pernyataan berikut pada fail composer.json dalam main1:
Composer.json dalam mapService adalah seperti berikut:
Konfigurasi ini memberitahu projek main1 bahawa alamat Git mapService perlu digunakan versi.
Sudah tentu anda perlu memberi perhatian kepada perkara berikut:
- dev-master bermaksud menggunakan secara langsung cabang induk mapService. Jika mapService mempunyai teg lain, anda boleh menggunakan maklumat teg di sini
- repositori ialah alamat projek
- Perkhidmatan yang saya ada di sini diletakkan pada GitLab yang dibina oleh syarikat kami
- Ruang nama folder src di bawah mapService ialah xxxx\xxxx\MapService\ dan menyokong PSR-4
- mapService menggunakan illuminate/database
Akhir sekali gunakan kemas kini komposer - vvv boleh memuat turun mapService yang kami perlukan dan letakkan dalam direktori vendor.
Kemas kini dan pengubahsuaian
Editor kami kini berada dalam projek utama1 Jika kami telah mengedit dan mengubah suai projek mapService, dan ingin menggabungkannya ke dalam cabang induk mapService , masukkan terus direktori vender/xxx/mapService dan lakukan operasi yang sepadan dengan Git. Ini membenarkan pengubahsuaian kod langsung.
Konfigurasi bebas
Gabungan struktur ini hanyalah langkah pertama dalam perarakan panjang. Apa yang lebih penting kemudian ialah apabila menulis perkhidmatan ini, saya perlu sentiasa ingat untuk tidak menggunakan segala-galanya dalam main1, untuk mengekalkan kebebasan mapService (kemerdekaan adalah salah satu syarat yang diperlukan untuk penservitan). Sebagai contoh, masalah pertama yang saya hadapi ialah fail konfigurasi perlu bebas.
Kaedah pelaksanaan saya ialah untuk mencipta kelas Config secara langsung dalam mapService, dan konfigurasi ditulis terus dalam kelas ini.
Saya sentiasa merasakan bahawa pelaksanaan fail konfigurasi ini agak mengecewakan, kerana dengan cara ini, fail konfigurasi ini memasuki perpustakaan Git. Tetapi saya benar-benar tidak dapat memikirkan penyelesaian yang lebih baik. Terdapat cara dalam Laravel untuk mencipta Config dalam folder konfigurasi Laravel dengan melaksanakan ServiceProvider, tetapi kaedah ini hanya digunakan untuk Laravel. Tiada kesejagatan. Sebaliknya, saya fikir pangkalan data yang digunakan oleh perkhidmatan itu sendiri adalah sebahagian daripada perkhidmatan itu, dan ia nampaknya tidak ada kena mengena dengan meletakkannya dalam perpustakaan Git perkhidmatan.
Struktur direktori
Struktur direktori adalah seperti di atas
- Configs menyediakan fail konfigurasi
- Kontrak menyediakan protokol antara muka
- Pengecualian memberikan pengecualian
- Sokongan menyediakan kaedah pihak ketiga atau perpustakaan kelas
- Model menyediakan interaksi dengan pangkalan data
- Pelaksanaan Node.php Antara muka khusus
Perkara yang paling penting tentang perkhidmatan ialah protokol antara muka. Jadi buat folder Kontrak dan antara muka perkhidmatan yang disediakan.
Pengendalian pengecualian antara muka harus cuba menggunakan pengecualian dan bukannya kod ralat untuk interaksi. Dan pengecualian ini harus disesuaikan sebanyak mungkin. Dengan cara ini, terdapat kemungkinan pemprosesan bersatu di peringkat atas.
Berfikir
Saya meletakkan model seni bina ini sebagai model berorientasikan perkhidmatan pada tahap kod PHP. Senario yang boleh digunakan hendaklah:
- Penservitian yang dirancang kemudiannya
- Senario di mana kedua-dua tenaga manusia dan pemikiran pada peringkat awal berharap dapat mengekalkan pembangunan pesat
dan Git Perbezaan antara SubTree dan SubModule
Malah, ketiga-tiga kaedah ini semuanya menggunakan satu projek sebagai perpustakaan kelas untuk projek lain. SubTree dan SubModule ialah penyelesaian Git. Komposer ialah penyelesaian untuk bahasa PHP Selain fungsi menambah projek ke projek lain, ia juga menyediakan penyelesaian seperti menambah versi dan penyelesaian pergantungan. Jika projek anda dalam PHP, maka menggunakan Composer sudah pasti merupakan pilihan yang lebih baik.
Servis protokol kemudiannya
Jika mapService saya mahu menjadi perkhidmatan protokol kemudian, maka projek mapService boleh dipermudahkan menjadi SDK Untuk logik perniagaan lapisan atas. Hanya gunakan kemas kini komposer untuk mengemas kini.
Pendaftaran dan penemuan perkhidmatan
Apa yang dipanggil "perpustakaan perkhidmatan" yang saya panggil di sini tidak menyelesaikan masalah pendaftaran perkhidmatan Saya tidak tahu berapa banyak projek menggunakan perkhidmatan saya. Ini mungkin memerlukan kerja proses tambahan.
Atas ialah kandungan terperinci Penjelasan terperinci tentang cara Komposer Git mencipta 'perpustakaan kelas perkhidmatan'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Input suara pengguna ditangkap dan dihantar ke backend PHP melalui API Mediarecorder JavaScript front-end; 2. PHP menjimatkan audio sebagai fail sementara dan memanggil STTAPI (seperti Pengiktirafan Suara Google atau Baidu) untuk mengubahnya menjadi teks; 3. PHP menghantar teks kepada perkhidmatan AI (seperti Openaigpt) untuk mendapatkan jawapan pintar; 4. PHP kemudian memanggil TTSAPI (seperti sintesis Baidu atau Google Voice) untuk menukar balasan ke fail suara; 5. PHP mengalir fail suara kembali ke bahagian depan untuk bermain, menyelesaikan interaksi. Seluruh proses dikuasai oleh PHP untuk memastikan hubungan lancar antara semua pautan.

PHP tidak secara langsung melaksanakan pemprosesan imej AI, tetapi mengintegrasikan melalui API, kerana ia adalah baik pada pembangunan web dan bukannya tugas-tugas intensif pengkomputeran. Integrasi API boleh mencapai pembahagian profesional buruh, mengurangkan kos, dan meningkatkan kecekapan; 2. Mengintegrasikan teknologi utama termasuk menggunakan Guzzle atau Curl untuk menghantar permintaan HTTP, pengekodan data JSON dan penyahkodan, pengesahan keselamatan utama API, pemprosesan giliran yang memakan masa yang memakan masa, pengendalian ralat yang teguh dan mekanisme semula, penyimpanan imej dan paparan; 3. Cabaran umum termasuk kos API daripada kawalan, hasil generasi yang tidak terkawal, pengalaman pengguna yang lemah, risiko keselamatan dan pengurusan data yang sukar. Strategi tindak balas menetapkan kuota dan cache pengguna, menyediakan panduan propt dan pemilihan multi-gambar, pemberitahuan asynchronous dan kemajuan kemajuan, penyimpanan pembolehubah persekitaran utama dan audit kandungan, dan penyimpanan awan.

Idea utama mengintegrasikan keupayaan pemahaman visual AI ke dalam aplikasi PHP adalah menggunakan API Perkhidmatan Visual AI pihak ketiga, yang bertanggungjawab untuk memuat naik imej, menghantar permintaan, menerima dan menghuraikan hasil JSON, dan menyimpan tag ke pangkalan data; 2. Penandaan imej automatik dapat meningkatkan kecekapan dengan ketara, meningkatkan pencarian kandungan, mengoptimumkan pengurusan dan cadangan, dan mengubah kandungan visual dari "data mati" kepada "data hidup"; 3. Memilih perkhidmatan AI memerlukan penghakiman yang komprehensif berdasarkan pencocokan fungsional, ketepatan, kos, kemudahan penggunaan, kelewatan serantau dan pematuhan data, dan disyorkan untuk memulakan dari perkhidmatan umum seperti Google CloudVision; 4. Cabaran umum termasuk masa tamat rangkaian, keselamatan utama, pemprosesan ralat, batasan format imej, kawalan kos, keperluan pemprosesan tak segerak dan isu ketepatan pengiktirafan AI.

Apakah perkara utama katalog? UseSelesscoin: Gambaran Keseluruhan dan Ciri -ciri Utama Ciri -ciri Utama Ciri -ciri Utama UselessCoin Uselesscoin (Tidak Berkonsentasi) Masa Depan: Apakah yang memberi kesan kepada harga UseStoScoin pada tahun 2025 dan seterusnya? Fungsi Teras Outlook Harga Masa Depan dan Pengimportan Uselesscoin (Tanpa Usah

Terdapat tiga cara utama untuk menetapkan pembolehubah persekitaran dalam PHP: 1. Konfigurasi global melalui php.ini; 2. Melalui pelayan web (seperti setenv Apache atau fastcgi_param of nginx); 3. Gunakan fungsi Putenv () dalam skrip PHP. Antaranya, php.ini sesuai untuk konfigurasi global dan jarang mengubah konfigurasi, konfigurasi pelayan web sesuai untuk senario yang perlu diasingkan, dan putenv () sesuai untuk pembolehubah sementara. Dasar kegigihan termasuk fail konfigurasi (seperti php.ini atau konfigurasi pelayan web), fail .Env dimuatkan dengan perpustakaan dotenv, dan suntikan dinamik pembolehubah dalam proses CI/CD. Maklumat sensitif pengurusan keselamatan harus dielakkan dengan keras, dan disyorkan untuk digunakan.

Artikel ini telah memilih beberapa laman web projek "selesai" Python dan portal sumber pembelajaran "blockbuster" peringkat tinggi untuk anda. Sama ada anda sedang mencari inspirasi pembangunan, mengamati dan belajar kod sumber peringkat induk, atau secara sistematik meningkatkan keupayaan praktikal anda, platform ini tidak boleh dilepaskan dan dapat membantu anda berkembang menjadi tuan python dengan cepat.

Peranan utama homebrew dalam pembinaan persekitaran MAC adalah untuk memudahkan pemasangan dan pengurusan perisian. 1. Homebrew secara automatik mengendalikan kebergantungan dan merangkumi kompilasi kompleks dan proses pemasangan ke dalam arahan mudah; 2. Menyediakan ekosistem pakej perisian bersatu untuk memastikan penyeragaman lokasi pemasangan perisian dan konfigurasi; 3. Mengintegrasikan fungsi pengurusan perkhidmatan, dan dengan mudah boleh memulakan dan menghentikan perkhidmatan melalui brewservices; 4. Menaik taraf dan penyelenggaraan perisian yang mudah, dan meningkatkan keselamatan dan fungsi sistem.

Artikel ini telah memilih satu siri laman web sumber produk siap peringkat tinggi untuk pemaju dan pelajar Vue. Melalui platform ini, anda boleh menyemak imbas, belajar, dan juga menggunakan semula projek lengkap Vue berkualiti tinggi secara dalam talian secara percuma, dengan itu dengan cepat meningkatkan kemahiran pembangunan dan keupayaan amalan projek anda.
