Giter Club home page Giter Club logo

php's People

Contributors

adhywiranto44 avatar aerysh avatar akunbeben avatar azqilana avatar chaubatkunda avatar dhafitf avatar dydrmr5 avatar fdlrahman avatar feri-irawan avatar hendraaagil avatar ikr4-m avatar kondiak avatar kroxys avatar luminettebourgeons avatar malvinval avatar mergify[bot] avatar mhaikalla avatar msazzuhair avatar muhammadnazhimmaulana avatar mushlih-almubarak avatar nersus15 avatar nomadkode avatar prayogaea avatar retry19 avatar rochmadnf avatar sensasi-delight avatar slowy07 avatar syzkii avatar wildanie12 avatar yezki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

php's Issues

5. Mencegah serangan SQL Injection (prepared statement)

Sub materi dari materi utama "Materi Basic: Database dasar prosedural" yang tertulis di Issue #67
Rekomendasi poin-poin yang dapat dijadikan bahan adalah sebagai berikut:

Prepared statement adalah sebuah fitur / teknik yang dapat mencegah serangan SQL injection. SQL Injection sederhananya memanfaatkan query yang memiliki parameter variabel dan mengisinya dengan query SQL lain yang dapat membahayakan keamanan database.

Poin-poin penting:

  • demonstrasi prepared statement

rekomendasi nama file :

  • basics/13_database_dasar_prosedural/5_prepared_statement.php

saran tabel yang digunakan dan strukturnya yaitu mengikuti seperti sub materi sebelumnya pada issue #98
Jika pengguna sudah mengikuti sub-materi sebelumnya, tabel pasti sudah dibuat. Jadi tidak perlu menuntun pengguna untuk membuat tabel lagi

nama tabel: 13_database_dasar_prosedural_buku

  • id INT AUTO_INCREMENT
  • judul VARCHAR(255)
  • deskripsi TEXT
  • penulis VARCHAR(255)
  • penerbit VARCHAR(255)

4. Mengambil data

Sub materi dari materi utama "Materi Basic: Database dasar prosedural" yang tertulis di Issue #67
Rekomendasi poin-poin yang dapat dijadikan bahan adalah sebagai berikut:

  • mysqli_fetch_array()
  • mysqli_fetch_assoc()
  • mysqli_fetch_object()
  • mysqli_fetch_row()

rekomendasi nama file :

  • basics/13_database_dasar_prosedural/4_mysqli_fetch.php (satu file saya rasa dapat mencakup semua)

saran tabel yang digunakan dan strukturnya yaitu mengikuti seperti sub materi sebelumnya pada issue #98

nama tabel: 13_database_dasar_prosedural_buku

  • id INT AUTO_INCREMENT
  • judul VARCHAR(255)
  • deskripsi TEXT
  • penulis VARCHAR(255)
  • penerbit VARCHAR(255)

Jika sub-materi sebelumnya sudah ada, seharusnya baris data sudah disiapkan karena sudah ada demo INSERT untuk menambahkan baris data.
Baris yang sudah ada tersebut bisa dijadikan file demo untuk sub-materi ini

3. Menjalankan query

Sub materi dari materi utama "Materi Basic: Database dasar prosedural" yang tertulis di Issue #67
Rekomendasi poin-poin yang dapat dijadikan bahan

  • mysqli_query() dan nilai kembaliannya
  • mysqli_affected_rows()
  • Contoh CRUD
    • INSERT
    • UPDATE
    • DELETE

Keterangan: perintah SELECT tidak perlu dituliskan di sini melainkan bisa dituliskan pada sub-materi selanjutnya saja (4. mengambil data)

rekomendasi nama file :

  • basics/13_database_dasar_prosedural/3_query_insert.php
  • basics/13_database_dasar_prosedural/3_query_update.php
  • basics/13_database_dasar_prosedural/3_query_delete.php

saran tabel yang digunakan dan strukturnya
nama tabel: 13_database_dasar_prosedural_buku

  • id INT AUTO_INCREMENT
  • judul VARCHAR(255)
  • deskripsi TEXT
  • penulis VARCHAR(255)
  • penerbit VARCHAR(255)

untuk koneksi dapat memanggil dari file demo sub-materi sebelumnya yaitu 2_connect.php

Daftar materi basic

Daftar materi yang ditambahkan di repositori Bellshade PHP :
(Klik salah satu materi untuk melihat lebih detail rekomendasi apa yang seharusnya ada didalam tiap materi)

(berikan komentar saran dibawah untuk materi yang lain):

Sesuai dengan format yang di tentukan sebelumnya :

  • Menggunakan pedoman kontirbusi sesuai yang ada di CONTRIBUTING.md
  • Tiap materi harus ada penjelasan berupa artikel yang bisa ditulis di README.md didalam masing-masing folder materi

Saran : Bisa juga dibuat animasi GIF untuk memperjelas cara kerja dari suatu fungsi / algoritma

Jika ingin mengambil bagian untuk mengerjakan materi-materi diatas, buka issue materinya lalu silahkan komentar, tag maintainer @bellshade/php-team untuk minta di assign kan ke diri kamu sendiri ๐Ÿ˜Š.

Setelah selesai, saat mengajukan pull request tambahkan close #issuenya untuk menutup issue secara otomatis ketika di merge

5. Property static dan method static (5_property_dan_method_static)

Sub-materi ini adalah bagian dari materi utama 14_oop_dasar

Properti dan method static adalah property / method yang tidak perlu dilakukan instantiasi untuk dapat dijalankan.

Kegunaan realistisnya adalah seringkali properti static digunakan untuk constant atau konfigurasi yang bersifat global.
Pada method static biasa digunakan untuk kegunaan yang tidak spesifik pada objek tertentu tapi terkait dengan entitas kelasnya, misalnya untuk menetapkan shift kerja untuk semua Kasir sehingga dapat dipanggil dengan Kasir::setWaktuShift(1), dsb.

harapannya yang dijelaskan pada submateri ini adalah, bagaimana cara membuat properti/method, mengakses properti/method dari sebuah objek instantiasi, dan mengakses properti/method dari dalam kelas itu sendiri.

Kamu bisa buat kelas Kasir yang didalamnya ada method static setWaktuShift() dan tentunya ada properti static public $waktuShift

rekomendasi nama file:

  • 5_property_dan_method_static.php

Baca CONTRIBUTING.md untuk pedoman berkontribusi selengkapnya.

Materi Basic: Database dasar prosedural

Materi basic database dasar ini menggunakan penulisan paradigma pemrograman yang prosedural (bukan PDO).

Rekomendasi sub materi dan demo

  • #36
    Untuk lebih detaillnya tentang SQL, cukup referensikan ke repo lain yang membahas SQL secara mendalam mulai dari awal.
  • #97
    • mysqli_connect() dan errror handlingnya
    • mysqli_select_db() (berpindah database, database yang sama tidak apa-apa)
  • #98
    • mysqli_query() dan nilai kembaliannya
    • mysqli_affected_rows()
    • Contoh CRUD
      • INSERT
      • SELECT
      • UPDATE
      • DELETE
  • #99
    • mysqli_fetch_array()
    • mysqli_fetch_assoc()
    • mysqli_fetch_object()
    • mysqli_fetch_row()
  • #119

Penting:

  • nama database di dalam koneksi harus dinamai dengan default dari repository ini yaitu bellshade_php
  • nama tabel mengikuti format [nomor]_[nama materi]_[nama tabel], spasi bisa menggunakan - . Contoh 12_database-prosedural_buku.

Catatan:
Tidak perlu mengerjakan seluruhnya sekaligus dalam1 PR, kamu dapat mengerjakan satu atau beberapa sub-materi saja. Buka salah satu sub-materi untuk detail dan saran bahan kontennya.
Tuliskan komentar pada Issue sub-materinya agar kami dapat assign kamu kedalam issue ini ๐Ÿ™
Klik pada salah satu sub-materinya untuk saran kita yang sangat mendetail

Materi Basic: Array mendalam

Rekomendasi sub-materi :

  • (1_array_index)
  • (2_array_asosiatif)
  • (3_array_multidimensi)
  • (4_array_manipulation)
    • sizeof()
    • array_keys() array_values()
    • array_push() array_pop() array_shift() array_unshift()
    • array_diff() array_splice()
    • array_merge()
    • array_flip() array_reverse() array_rand() array_slice()
    • sort() rsort() asort() ksort() arsort() krsort()

Materi Basic: Manipulasi String

Rekomendasi sub-materi :

  • (1_informasi_string)
    • strlen()
    • str_word_count()
    • strpos()
    • substr_count()
  • (2_pemotongan_string)
    • trim() rtrim() ltrim()
    • substr()
  • (3_kapitalisasi_string)
    • strtolower() strtoupper()
    • ucfirst() ucwords()
    • lcfirst()
  • (4_string_array)
    • explode(), implode()
    • str_split()
    • join()
  • (5_escape_dan_formatting)
    • addslashes()
    • stripslashes()
    • htmlspecialchars(), htmlspecialchars_decode()
  • (6_manipulasi_string)
    • str_pad()
    • wordwrap()
    • str_shuffle()
    • str_repeat()
    • str_replace()
    • strtr()

Algorithm: Search/InterpolationSearch

Algoritma Pencarian Interpolasi adalah algoritma yang berjalan sangat cantik dan efisien untuk array yang berurutan dengan selisih yang seragam.

Kamu dapat membuat demonstrasi dan artikel penjelasannya di algorithms/Search/InterpolationSearch/

didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

Search
โ”œ InterpolationSearch
โ”‚  โ”œ InterpolationSearch.php
โ”‚  โ”” README.md
โ”” README.md

Demo algoritma ditulis dalam paradigma OOP dan kamu dapat lakukan instantiasi langsung di file kelas itu juga.
Jangan lupa untuk membuat Unit testing pada folder tests/

Baca pedoman kontribusi selengkapnya di CONTRIBUTING.md.

Progress Checklist :

  • Implementasi / demonstrasi algoritma
  • Artikel penjelasan
  • Unit testing

Mention saya untuk mengambil bagian ini agar kita bisa assign kamu ke Issue ini ๐Ÿ‘.
Terima kasih

Materi Basic: File handling

File Handling adalah penanganan file dan folder oleh PHP. Ada banyak yang bisa dilakukan PHP terhadap file dan folder agar dapat bermanfaat sebagai media penyimpanan yang siap melayani sistem secara terus menerus.

Rekomendasi sub-materi :

  • Gambaran Awal
  • #124
  • #125
  • menuliskan file (3_write_file)
  • menghapus file (4_delete_file)
  • upload file (5_upload_file)
  • properties & validasi file (6_validation_file)
    • filectime(), filemtime()
    • filesize() filetype()
    • fileperms() fileowner()
    • is_dir()
    • file_exists()
    • is_file()

Penting: Karena materi ini berhubungan langsung dengan file, ada beberapa ketentuan yang harus diikuti untuk
kemudahan pengerjaan dan kerapian struktur direktori. Diantaranya:

  • Untuk file yang tidak dibuat oleh file demo (file statis) ditaruh pada direktori 10_file_handling/assets/
  • Untuk file yang dibuat oleh file demo (buat file dll) ditaruh pada direktori 10_file_handling/storage/
    Folder storage secara otomatis sudah diabaikan oleh git agar tidak ikut terupload ke repositori utama.

baca CONTRIBUTING.md untuk pedoman kontribusi lebih lanjut

1. Pengenalan paradigma OOP

Sub-materi dari materi utama yaitu 14_oop_dasar yang tertulis pada issue #84.

Pengenalan paradigma OOP dapat berupa gambaran umum fundamental penulisan dalam bentuk paradigma berorientasi objek. Hal lain yang berkaitan juga dapat di cantumkan juga seperti perbedaannya dengan gaya penulisan prosedural. ๐Ÿ‘

1. membaca file dan folder (1_read_file_folder)

Sub-materi ini adalah bagian dari materi utama: 10. File handling yang tertulis di Issue #24.

Membaca file dan folder dapat dilakukan dengan PHP. Di sub-materi ini, contoh file perlu disediakan di folder assets (karena bukan file buatan demo PHP)

Kemudian hasilnya bisa dapat ditampilkan menggunakan print_r()

baca CONTRIBUTING.md untuk pedoman kontribusi lebih lanjut

Algoritma: Search/BinarySearch

Algoritma binary search yaitu algoritma pencarian secara efisien yang ditujukan untuk deretan yang sudah diurutkan.

Kamu dapat membuat demonstrasi dan artikel penjelasannya di algorithms/Search/BinarySearch/

didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

Search
โ”œ BinarySearch
โ”‚  โ”œ BinarySearch.php
โ”‚  โ”” README.md
โ”” README.md    << Ini untuk pengenalan algoritma search secara umum saja. Tuliskan judulnya 'Algoritma Search' saja boleh

Demo algoritma ditulis dalam paradigma OOP dan kamu dapat lakukan instantiasi langsung di file kelas itu juga.
Jangan lupa untuk membuat Unit testing pada folder tests/

Baca pedoman kontribusi selengkapnya di CONTRIBUTING.md.

Progress Checklist :

  • Implementasi / demonstrasi algoritma
  • Artikel penjelasan
  • Unit testing

Mention saya untuk mengambil bagian ini agar kita bisa assign kamu ke Issue ini ๐Ÿ‘.
Terima kasih

3. Property dan method (3_property_dan_method)

Sub-materi ini adalah bagian dari materi utama 14_oop_dasar di #84

Setelah class dan object, dilanjutkan dengan penerapan property dan method yang bisa ditampilkan dari objek kelas untuk menunjukkan bahwa penerapan property dan method berhasil

Masih menggunakan analogi kelas Pengguna pada submateri sebelumnya (#108), properti dan method yang digunakan yaitu seperti
nama, jenis kelamin, alamat, email, username, password

rekomendasi nama file:

  • 3_property_dan_method.php

Baca CONTRIBUTING.md untuk pedoman berkontribusi selengkapnya.

Algorithm: Backtracking/Sudoku

Algoritma penyelesaian sudoku dapat dilakukan dengan teknik backtracking. Anda dapat menuliskan contoh implementasi dan artikel penjelasannya di algorithms/BackTracking/Sudoku/

didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

BackTracking/Sudoku
โ”œ Sudoku.php
โ”œ README.md

File index.php adalah halaman navigasi yang dapat anda copy dari folder algoritma lain. Selengkapnya tentang pedoman kontribusi bisa dibaca di CONTRIBUTING.md

Progress Checklist :

  • Implementasi / demonstrasi algoritma
  • Artikel penjelasan

Assign diri sendiri pada Assignees untuk mengambil bagian ini.
Terima kasih

Materi Basic: Operator

Rekomendasi sub-materi:

  • Operator Aritmatika (1_arithmetic_operator)
  • Increment dan Decrement (2_increment_decrement)
  • Operator pembanding (3_comparison_operator)
  • Operator logika (4_logic_operator)
  • Operator Bitwise (5_bitwise_operator)
  • Tambahan (6_tambahan)
    • instanceof
    • @ (error control)

Bug: h4 lebih besar dibandingkan h3

Deskripsi

Untuk h4 belum diberi style untuk font-size

Solusi

Memberikan style font-size h4 pada markdown-style.css

Markdown

### Pengacakan pada array
#### array_flip

Preview

image

Saya akan fix bug ini

Materi Basic: OOP Dasar

Nama direktori: basics/14_oop_dasar

Rekomendasi Sub-materi
(Klik pada salah satu submateri untuk melihat detail petunjuk dan cara pengerjaannya) :

Tiap sub-materi ada artikel yang harus dituliskan di README.md beserta file demonya masing-masing
(klik issue submateri untuk lebih detailnya)

Baca CONTRIBUTING.md untuk pedoman berkontribusi lainnya.

1. Pengenalan Awal (beserta teknik-teknik yg dapat digunakan)

Sub materi dari materi utama "Materi Basic: Database relasional prosedural" yang tertulis di Issue #83

Di sub-materi ini, bisa dijelaskan tentang serba-serbi dalam menampilkan record / baris data yang memiliki relasi dengan tabel lain. Beberapa rekomendasi poin yang bisa kita sarankan adalah sebagai berikut:

  • Gambaran dasar tentang relasional database termasuk manfaatnya untuk menerjemahkan database menjadi informasi yang menarik
  • Beberapa kemungkinan kardinalitas relasi (one to one, one to many, many to many)
  • Beberapa hal / teknik yang bisa dilakukan untuk mengambil data relasional.
  • Petunjuk tentang tabel yang digunakan dalam database untuk file demo nanti. (termasuk file migration.phpnya)

Rekomendasi nama file :

  • migration.php (untuk bantuan memproduksi tabel dan sampel data yang dipakai praktek)
  • connect.php (untuk menghubungkan ke database, kamu dapat copy paste contoh connect kami di CONTRIBUTING.MD)

Yang Harus:

  • Informasi koneksi yang ada di file koneksi harus menggunakan konfigurasi dari .env (lihat contoh yang kami tuliskan di CONTRIBUTING.MD)
  • Gunakan 2 tabel 13_database_relasional_buku dan 13_database_relasional_penulis. Tambahkan ForeignId penulis_id pada tabel buku

Jika dirasa tidak yakin dengan struktur database yang dibuat, bisa tuliskan komentar dibawah yah ๐Ÿ™๐Ÿ‘

Materi Basic: Database relasional prosedural

Nama direktori: basics/13_database_relasional_prosedural

Yaitu menampilkan baris data yang berada didalam tabel yang berelasi dengan tabel lain. Ada beberapa teknik yang biasa dilakukan yaitu seperti berikut:
Rekomendasi Sub-materi:

Catatan: nama file demo PHP bisa terserah, namun harus sesuai konteks.
Saran kami:

  • Tambahkan screenshot struktur database relasional pada README.md_
  • Gunakan tabel buku dan penulis.
    Kamu dapat membuat file migration sederhana agar mempermudah pengguna untuk generate sampel data. beri nama migration.php
    Berdasarkan aturan penamaan tabel yang tertulis pada CONTRIBUTING.md, nama tabel tersebut menjadi 13_database_relasional_buku dan 13_database_relasional_penulis

Penting:
Baca CONTRIBUTING.md untuk pedoman berkontribusi lainnya terutama untuk pedoman penggunaan database seperti koneksi, penamaan tabel dll.

2. koneksi database

Sub materi dari materi utama "Materi Basic: Database dasar prosedural" yang tertulis di Issue #67
Rekomendasi poin-poin yang dapat dijadikan bahan

  • mysqli_connect() dan errror handlingnya
  • mysqli_select_db() (berpindah database, database yang sama tidak apa-apa)

rekomendasi nama file basics/13_database_dasar_prosedural/ 1_connect.php

2. Class dan object (2_class_object)

Sub-materi ini adalah turunan dari materi utama yaitu 14_oop_dasar

Pada sub materi ini bisa dijelaskan tentang bagaimana cara membuat kelas dan menginstantiasi kelas tersebut menjadi sebuah objek yang dapat digunakan.

Karena pada titik ini masih belum dibuat tentang cara membuat atribut dan method, untuk menunjukkan bahwa sebuah kelas berhasil dibuat, bisa dilakukan print_r($objek) disitu akan muncul stdClass yang artinya _instance dari sebuah kelas berhasil dibuat.

Rekomendasi nama file demo

  • basics/14_oop_dasar/2_class_object.php

Baca CONTRIBUTING.md untuk pedoman berkontribusi selengkapnya.

Materi Basic: Variabel dan Tipe data

Rekomendasi Sub materi :

  • Tipe data dasar (1_tipe_data_dasar)
  • Variabel dalam String (2_variabel_dalam_string)
  • Array (3_array)

Note: Cukup pengenalan array awal saja untuk demonstrasi foreach di materi berikutnya (perulangan)

  • Variabel Konstanta (4_constant_variable)

Referensi : PHP: Constants

  • Predefined Variable (5_predefined_variable)

Referensi : PHP: Predefined Variable

Daftar Algoritma

Algoritma yang terdaftar untuk bisa ditambahkan ke project oleh kontributor:

Untuk saran algoritma yang lain bisa komentar dibawah yah,

Sesuai dengan format yang di tentukan sebelumnya :

  • Menggunakan pedoman kontribusi sesuai yang ada di CONTRIBUTING.md
  • Tiap materi harus ada penjelasan berupa artikel yang bisa ditulis di README.md didalam masing-masing folder materi

Saran : Bisa juga dibuat animasi GIF untuk memperjelas cara kerja dari suatu fungsi / algoritma

Jika ingin mengambil bagian untuk mengerjakan algoritma diatas, klik issue algoritmanya lalu silahkan komentar didalam issue tersebut, tag maintainer @bellshade/php-team untuk minta di assign kan ke diri kamu sendiri ๐Ÿ˜Š.

Setelah selesai, saat mengajukan pull request tambahkan close #issuenya untuk menutup issue secara otomatis ketika di merge
Jangan lupa untuk baca dan ikuti CONTRIBUTING.md

3. Masalah n+1 (3_n_plus_one)

Ini adalah sub-materi dari materi utama "Materi Basic: Database relasional prosedural" yang tertulis di Issue #83

Masalah N+1 adalah adanya query SQL yang berjalan didalam perulangan, sehingga pada 1 halaman dijalankan banyak query sekaligus yang bisa mengakibatkan penurunan performa jika baris data sudah berisi banyak.

Di sub-materi ini, cukup demokan saja masalahnya dengan menggunakan relasi tabel antara penulis -> buku (one to many) dengan skenario: "Menampilkan daftar penulis beserta buku-buku yang ditulisnya" . Saat mengambil data buku dari penulis, lakukan query dasar seperti biasa didalam perulangan, tampilkan juga log untuk menandakan bahwa sebuah query sedang dijalankan.

Harapannya, pengguna dapat melihat ada banyak sekali query yang dijalankan pada 1 halaman saja.

Rekomendasi nama file :

  • 3_n_plus_one.php

Pedoman kontribusi selengkapnya bisa dilihat di CONTRIBUTING.MD

2. membuat file dan folder (2_create_file_folder)

Sub-materi ini adalah bagian dari materi utama: 10. File handling yang tertulis di Issue #24.

Membuat file dan folder bisa dilakukan di folder 10_file_handling/storage/. Disitu bisa dibuat folder dengan nama terserah menggunakan mkdir() lalu bisa dilanjutkan dengan membuat file didalam folder tersebut dengan nama terserah menggunakan fopen(), fwrite() fclose()

perhatikan disitu semua hasil file dan folder disimpan didalam storage daripada assets. Karena pada demo sub-materi ini menciptakan / membuat file, maka file tersebut disimpan di storage agar terabaikan oleh git sehingga tidak ikut terupload ke repository yang bisa mengakibatkan redundasi data

rekomendasi nama file demo:

  • 10_file_handling/2_create_file_folder.php

baca CONTRIBUTING.md untuk pedoman kontribusi lebih lanjut

Aturan penggunaan database agar terstruktur dan konsisten

Bellshade PHP pastinya bakal memanfaatkan layanan database agar semua jenis dan model implementasi dapat dilakukan dan digunakan sebagai referensi.

Saran yang ada:

  • Cukup menggunakan 1 database untuk semuanya
  • Penamaan tabel yang spesifik untuk setiap materi / setiap direktori di kategori lain.
  • menggunakan konfigurasi .env untuk konfigurasi yang lebih mudah

Progress:

  • Implementasi fitur
  • Update pedoman penggunaan database di CONTRIBUTING.md
  • Testing kestabilan dan persetujuan maintainer

4. Constructor dan destructor (4_constructor_dan_destructor)

Sub-materi ini adalah bagian dari materi utama 14_oop_dasar

Constructor adalah sebuah method identifier bawaan PHP OOP yang dijalankan saat objek diinstantiasi. Sementara destructor adalah method yang selalu dijalankan diakhir penggunaan objek kelas.

Disini bisa diimplementasikan constructor untuk menetapkan properti properti langsung. ada 2 bagian yaitu
constructor tanpa parameter (untuk menggambarkan bahwa constructor dijalankan saat objek dibuat).
dan constructor dengan parameter (untuk menggambarkan bahwa constructor dapat menerima value dari parameter langsung saat objek dibuat)

Pada demonya kamu dapat membuat sebuah constructor yang menampilkan sebuah pesan, dan pada file demo yang lain (yang bagian constructor with parameter) kamu dapat buat constructor yang bisa sekaligus menetapkan nilai propertinya seperti nama,username. Gunakan contoh kelas yang ada pada materi sebelumnya di #109.

rekomendasi nama file:

  • 4_constructor_dan_destructor_1.php
  • 4_constructor_dan_destructor_2.php

Baca CONTRIBUTING.md untuk pedoman berkontribusi selengkapnya.

Algorithm: Sorting/SelectionSort

Selection Sort, algoritma pengurutan data yang sangat sederhana yang cara kerjanya adalah dengan melakukan iterasi di setiap index deretan berkali-kali dan melakukan pengkondisian untuk mencari nilai terkecil/terbesar agar dapat di tempatkan pada tempat elemen yang sudah diurutkan.

Kamu dapat menempatkan pada folder algorithms/Sorting/SelectionSort
didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

Search
โ”œ SelectionSort
โ”‚  โ”œ SelectionSort.php
โ”‚  โ”” README.md
โ”” README.md  

Jangan lupa untuk membuat Unit testingnya juga pada direktori tests/
Selengkapnya tentang pedoman kontribusi bisa dibaca di CONTRIBUTING.md

Progress Checklist

  • Implementasi kode
  • Artikel penjelasan Readme
  • Unit Testing

Algorithm: Sorting/BubbleSorting

Algoritma Bubble Sorting sudah ada implementasinya di algorithms/Sorting/BubbleSort namun belum ada artikel yang bisa menjelaskan tentang algoritma ini. Bagi yang bisa mengerjakan bisa silahkan assign di Issue ini ..

Untuk mengerjakan silahkan tulis penjelasannya di README.md didalam direktori algorithms/Sorting/BubbleSort
Kurang lebih bentuk direktorinya adalah sebagai berikut :
didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

BackTracking/Sudoku
โ”œ BubbleSorting.php
โ”œ README.md
โ”” index.php

Selengkapnya tentang pedoman kontribusi bisa dibaca di CONTRIBUTING.md

Progress Checklist

  • Implementasi kode
  • Artikel penjelasan Readme

Materi Basic: Hello World

Di materi ini bisa ditulis tentang awal cara memulai pemrograman PHP seperti

  • Persiapan software stack yang dibutuhkan
    Di sub materi ini bisa dijelaskan jenis software apa saja yang dibutuhkan.
    misalnya seperti: Web Server, PHP, dan DBMS.
    contoh-contohnya seperti : Apache, Nginx, MariaDB dll.
    dan juga software stacknya seperti : XAMPP, Laragon, WAMP, MAMP dll.
  • Hello World (2_hello_world)
  • Implementasi PHP didalam HTML (3_php_html)

Kesalahan pengurutan direktori berdasarkan angka pada navigasi explorer

Deskripsi

Direktori yang memiliki prefix angka belasan, ditampilkan diatas direktori yang memiliki prefix angka satuan. Perlu diperbaiki pengurutan / sorting yang ada pada halaman index.php (navigasi explorer)

Screenshot

image

Environment

  • Windows 11
  • Apache (Laragon Stack)
  • Penempatan pada subfolder bellshade/php-upstream/ (base_url sudah diset)

Utilities: manipulasi gambar - Imagick

Imagick adalah ekstensi PHP yang paling popular digunakan untuk melakukan manipulasi gambar. Bellshade PHP masih belum ada implementasi kode dan artikel penjelasan untuk manipulasi gambar menggunakan imagick,

untuk memulai, silahkan buat folder utilities/image manipulation/imagick , lalu silahkan buat implementasi dan artikel penjelasan sesuai dengan format yang ditulis di CONTRIBUTING.md

untuk direktori penyimpanan file manipulasi gambar statis, kamu dapat gunakan assets/content/utilities/image manipulation/imagick namun untuk penyimpanan gambar hasil keluaran demo imagick, taruh didalam folder utilities/image manipulation/imagick/storage. Kami bedakan untuk mencegah gambar hasil demo ikut terupload bersama repo.

Jika ingin mengambil bagian ini kamu dapat self assign ke Issue ini,

Progress checklist & saran konten:

  • demo manipulasi gambar
    • resize gambar
    • crop gambar
    • rotate gambar
    • watermark
  • artikel penjelasan

Jangan ragu untuk berdiskusi di kolom diskusi di bawah jika dirasa ada yang membingungkan.

Terima kasih.

Materi Basic: Form handling

Rekomendasi sub-materi :

  • (1_submit_button)
  • (2_text_based_input)
    • text
    • number, range
    • email, password
    • tel
    • date, time, week, month
    • hidden
  • (3_select)
  • (4_datetime)
  • (5_checkbox)
  • (6_radio)
  • (7_file)
  • (8_multiple_file)

Algorithm: Sorting/Insertion Sort

Insertion Sort yaitu algoritma pengurutan yang disetiap iterasi melakukan perbandingan pada indeks sebelumnya lalu sekaligus menempatkan dirinya pada posisi pengurutan yang benar.

Kamu dapat menempatkan pada folder algorithms/Sorting/InsertionSort
didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

Search
โ”œ InsertionSort
โ”‚  โ”œ InsertionSort.php
โ”‚  โ”” README.md
โ”” README.md  

Jangan lupa untuk membuat Unit testingnya juga pada direktori tests/
Selengkapnya tentang pedoman kontribusi bisa dibaca di CONTRIBUTING.md

Progress Checklist

  • Implementasi kode
  • Artikel penjelasan Readme
  • Unit Testing

error: tampilan readme kurang baik

Maaf Sebelumnya, mungkin saat memisahkan branch tadi.

Tampilan readme pada algoritma jumpsearch jadi kurang baik

ini tampilan di local saya tadi

Sebelum

ini hasil merge

Hasil Merge

Codacy Workflow Integration

Beberapa ToDo list untuk proses integrasi workflow dengan Codacy:

  • Rename konfigurasi menjadi ruleset.phpcs.xml
  • Optimize main composer worklow
  • Trigger check by review PR untuk manual recheck

1. Pengenalan - Database dasar prosedural

Rekomendasi sub-materi database: Menghubungkan PHP ke DBMS MySQL.

Rasanya akan kurang kalau belajar PHP tanpa mempelajari bagaimana menghubungkannya ke DBMS MySQL. untuk itu, saya merekomendasikan sub-materi database yaitu Menghubungkan PHP ke DBMS MySQL.

Materi yang akan dibahas:

  • Pengenalan
  • Tentang koneksi database
  • sedikit info tentang MySQL Referensikan ke Repository SQL di Bellshade

progress list

  • penjelasan di README.md

Materi Basic: Cookie & Session

Nama direktori: basics/11_cookie_dan_session

Rekomendasi Sub-materi:

  • Pengenalan Cookie
  • Membuat dan Mengubah Cookie (2_setcookie)
  • Menghapus Cookie (3_delete_cookie)
  • Pengenalan Session
  • Membuat dan mengubah session (5_set_session_)
  • Menghapus session (6_delete_session)
  • Perbedaan Cookie dan Session

Catatan: nama file demo PHP bisa terserah, namun harus sesuai konteks.

Baca CONTRIBUTING.md untuk pedoman berkontribusi lainnya.

Materi Basic: Perulangan

Rekomendasi sub-materi:

  • 1_for
  • 2_foreach
  • 3_while
  • 4_do_while

Progress Checklist:

  • Implementasi demo kode PHP
    • 1_for
    • 2_foreach
    • 3_while
    • 4_do_while
  • Artikel penjelasan README.md
  • Navigasi index.php (duplikat dari folder materi lain)

Algorithm: Search/Linear Search

Algoritma Linear Search, salah satu algoritma pencarian yang sederhana.
Kamu dapat membuat demonstrasi dan artikel penjelasannya di algorithms/Search/Linear Search/

didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

Search
โ”œ Linear Search
โ”‚  โ”œ LinearSearch.php
โ”‚  โ”” README.md
โ”” README.md    << Ini untuk pengenalan algoritma search secara umum saja. Tuliskan judulnya 'Algoritma Search' saja boleh

Demo algoritma ditulis dalam paradigma OOP dan kamu dapat lakukan instantiasi langsung di file kelas itu juga.
Jangan lupa untuk membuat Unit testing pada folder tests/

Baca pedoman kontribusi selengkapnya di CONTRIBUTING.md.

Progress Checklist :

  • Implementasi / demonstrasi algoritma
  • Artikel penjelasan
  • Unit Testing

Mention saya untuk mengambil bagian ini agar kita bisa assign kamu ke Issue ini ๐Ÿ‘.
Terima kasih

Algorithm: Search/JumpSearch

Jump search, mirip binary search yaitu untuk search pada array yang sudah terurutkan.
Kamu dapat membuat demonstrasi dan artikel penjelasannya di algorithms/Search/JumpSearch/

didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

Search
โ”œ JumpSearch
โ”‚  โ”œ JumpSearch.php
โ”‚  โ”” README.md
โ”” README.md    << Ini pengenalan algoritma search secara umum saja. Tuliskan judulnya 'Algoritma Search' saja boleh, (abaikan jika sudah ada)

Demo algoritma ditulis dalam paradigma OOP dan kamu dapat lakukan instantiasi langsung di file kelas itu juga.
Jangan lupa untuk membuat Unit testing pada folder tests/

Baca pedoman kontribusi selengkapnya di CONTRIBUTING.md.

Progress Checklist :

  • Implementasi / demonstrasi algoritma
  • Artikel penjelasan
  • Unit testing

Mention saya untuk mengambil bagian ini agar kita bisa assign kamu ke Issue ini ๐Ÿ‘.
Terima kasih

2. Join (2_join)

Ini adalah sub-materi dari materi utama "Materi Basic: Database relasional prosedural" yang tertulis di Issue #83

Setelah tabel sudah terbentuk pada sub-materi sebelumnya, bisa dimulai untuk membuat implementasi dari beberapa hal yang bisa digunakan untuk mengambil data relasional dari database.
Salah satunya adalah join, yang hanya menggunakan satu query SQL yang menghasilkan baris data dari 2 tabel.

Akan lebih bagus lagi jika ditunjukkan juga apa kekurangan jika menggunakan metode ini, misalnya, hanya berlaku untuk relasi yang one to one, ketidakpraktisan saat ada nama kolom yang sama dst.

Rekomendasi nama file :

  • 2_join.php

Pedoman kontribusi selengkapnya bisa dilihat di CONTRIBUTING.MD

Algorithm: Search/TernarySearch

Algoritma Ternary Search, algoritma efisien yang ditujukan untuk deretan yang sudah diurutkan (sorted array).

Kamu dapat membuat demonstrasi dan artikel penjelasannya di algorithms/Search/TernarySearch/

didalam direktori tersebut, struktur direktori harus berbentuk sebagai berikut:

Search
โ”œ TernarySearch
โ”‚  โ”œ TernarySearch.php
โ”‚  โ”” README.md
โ”” README.md

Demo algoritma ditulis dalam paradigma OOP dan kamu dapat lakukan instantiasi langsung di file kelas itu juga.
Jangan lupa untuk membuat Unit testing pada folder tests/

Baca pedoman kontribusi selengkapnya di CONTRIBUTING.md.

Progress Checklist :

  • Implementasi / demonstrasi algoritma
  • Artikel penjelasan
  • Unit testing

Mention saya untuk mengambil bagian ini agar kita bisa assign kamu ke Issue ini ๐Ÿ‘.
Terima kasih

Materi Basic: Fungsi dasar

Rekomendasi sub-materi :

  • dasar fungsi (1_basic_function)
  • parameter dan return (2_parameter_return)
  • scope variabel dalam fungsi (2_variable_scope) | referensi
  • variabel statis dalam fungsi (3_static_variable) | referensi
  • fungsi tanpa nama (4_closure_function) | referensi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.