Jom lihat kelebihan dan kenapa kita perlu beralih ke PHP 7.

Seperti yang semua sedia maklum melalui portal, rasmi php.net telah menghentikan pembangunan PHP 5 (versi terakhir sehingga artikel ini ditulis adalah 5.6.30) dan mula fokus kepada pembangunan PHP 7:

The PHP development team announces the immediate availability of PHP 5.6.30. This is a security release. Several security bugs were fixed in this release. All PHP 5.6 users are encouraged to upgrade to this version.

According to our release calendar, this PHP 5.6 version is the last planned release that contains regular bugfixes. All the consequent releases will contain only security-relevant fixes, for the term of two years. PHP 5.6 users that need further bugfixes are encouraged to upgrade to PHP 7.

Jadi sudah masanya untuk kita turut mengemaskini server dan aplikasi agar selari versi terkini ini. Untuk itu jom kita lihat beberapa features baru yang terdapat dalam PHP 7 ini.

Null coalescing operator

The null coalescing operator (??) has been added as syntactic sugar for the common case of needing to use a ternary in conjunction with isset(). It returns its first operand if it exists and is not NULL; otherwise it returns its second operand.

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>

Spaceship operator

The spaceship operator is used for comparing two expressions. It returns -1, 0 or 1 when $a is respectively less than, equal to, or greater than $b. Comparisons are performed according to PHP’s usual type comparison rules.

<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>

Constant arrays using define()

Array constants can now be defined with define(). In PHP 5.6, they could only be defined with const.

<?php
define('ANIMALS', [
'dog',
'cat',
'bird'
]);

echo ANIMALS[1]; // outputs "cat"
?>

Session options

session_start() now accepts an array of options that override the session configuration directives normally set in php.ini.

These options have also been expanded to support session.lazy_write, which is on by default and causes PHP to only overwrite any session file if the session data has changed, and read_and_close, which is an option that can only be passed to session_start() to indicate that the session data should be read and then the session should immediately be closed unchanged.

For example, to set session.cache_limiter to private and immediately close the session after reading it:

<?php
session_start([
'cache_limiter' => 'private',
'read_and_close' => true,
]);
?>

random_bytes & random_int

Generates an arbitrary length string of cryptographic random bytes that are suitable for cryptographic use, such as when generating salts, keys or initialization vectors.

Essentially secure way of generating random data. There are random number generators in PHP, rand() for instance, but none of the options in version 5 are very secure. In PHP 7, they put together a system interface to the operating system’s random number generator. Because we can now use the operating system’s random number generator, if that gets hacked we have bigger problems. It probably means your entire system is compromised and there is a flaw in the operating system itself.

Secure random numbers are especially useful when generating random passwords or password salt.

What does this look like for you as a developer? You now have 2 new functions to use: random_int and random_bytes.

<?php
$bytes = random_bytes(5);
var_dump(bin2hex($bytes)); // outputs string(10) "385e33f741"
?>

Generates cryptographic random integers that are suitable for use where unbiased results are critical, such as when shuffling a deck of cards for a poker game.

Benchmarks for PHP 7 consistently show speeds twice as fast as PHP 5.6 and many times even faster! Although these results are not guaranteed for your project, the benchmarks were tested against major projects, Drupal and WordPress, so these numbers don’t come from abstract performance tests.

<?php
var_dump(random_int(100, 999)); // outputs int(248)
var_dump(random_int(-1000, 0)); // outputs int(-898)
?>

Selain itu antara kelebihan yang ada pada PHP 7 adalah lebih laju daripada PHP 5.6

Benchmarks for PHP 7 consistently show speeds twice as fast as PHP 5.6 and many times even faster! Although these results are not guaranteed for your project, the benchmarks were tested against major projects, Drupal and WordPress, so these numbers don’t come from abstract performance tests.

Untuk rujukan dan maklumat lebih lanjut, sila refer ke pautan berikut:
+ https://github.com/tpunt/PHP7-Reference
+ https://blog.engineyard.com/2015/what-to-expect-php-7
+ https://devzone.zend.com/4693/php-7-glance/
+ https://www.digitalocean.com/company/blog/getting-ready-for-php-7/
+ https://www.colinodell.com/blog/2015-12/five-lesser-known-features-of-php-7
+ https://laracasts.com/series/php7-up-and-running
+ https://www.sitepoint.com/whats-new-and-exciting-in-php-7-1/
+¬†https://mediatemple.net/community/products/dv/207889153/what’s-new-in-php-7
+ http://www.zend.com/en/resources/php-7

Comments

Sublime Text 3 Plugin For Fast Coding

Sublime Text 3 adalah satu editor yang saya gunakan untuk membuat kod-kod pengaturcaraan. Walaupun ia harus mempunyai lesen berbayar, namun harga lesennya adalah agak murah berbanding kepelbagaian ciri-ciri yang ada padanya. Hampir semua ciri-ciri yang saya perlukan semasa membuat kod untuk membangunkan sesebuah laman web terdapat pada aplikasi ini. Ini membantu saya membangunkan laman web yang dikehendaki dengan lebih mudah dan cepat.

Saya menggunakan OS Windows 10. Di antara Sublime Text 3 Plugin yang wajib pada saya perlu dipasang sebelum Sublime Text 3 anda menjadi lebih superb adalah seperti berikut:

1. Control Package

Control Package merupakan pengurus setiap package yang anda pasang/kemaskini/buang. Shortcut-key: Ctrl + Shift + P

2. Alignment

Alignment memudahkan akan untuk menyusun kod anda agar lebih teratur
Shortcut-key: Ctrl + Alt + A

3. Emmet

Plugin wajib yang mencepatkan untuk menghasilkan kod melalui shortcut yang telah ditetapkan oleh plugin ini. Untuk senarai shortcut, sila ke url berikut –¬†http://docs.emmet.io/

4. SidebarEnhancement

Plugin ini akan menambah menu pada sidebar yang terdapat dalam Sublime Text 3. Pada asasnya sidebar sedia ada dalam Sublime Text 3 adalah sangat asas.

5. ColorPicker

ColorPicker memudahkan kita untuk memilih warna yang dikehendaki untuk menetapkan warna tulisan, background dan sebagainya. Sebelum ini saya terpaksa membuka another browser tab untuk melihat HEX bagi sesuatu warna.
Shortcut-key: Ctrl + Shift + C

6. Color Highlighter

Color Highlighter memudahkan kita untuk melihat warna setelah hexadecimal (HEX) ditulis. Sebelum ini saya terpaksa refresh page yang telah dibuat untuk melihat hasil warna yang dipilih.

7. Bootstrap 3 Snippets

Snippets untuk Twitter Bootstrap 3. Untuk menghasilkan elemen form, table, alerts, badges, carousel, icons, images, pagination, navigations, panel dan sebagainya
Shortcut-key: bs3-*

8. GIT

Saya menggunakan version control system (VCS) GIT. Melalui plugin ini, aplikasi GIT dapat diintergrasikan dengan Sublime Text 3. Namun begitu, saya masih suka menggunakan git bash :p. Setelah pemasangan GIT, jangan lupa untuk menetapkan dalam Environment Variables > System Variables > Path dan tambahkan lokasi pemasangan cthnya: D:\Software\Git\bin.

9. GitGutter

Plugin GIT sahaja tidak lengkap tanpa dipasang plugin GitGutter. Plugin ini memudahkan kita untuk melihat perbezaan apabila berlaku conflict. Kita dapat melihat perbezaan yang ditambah/dibuang/diubah

10. Predawn Theme

Tema kegemaran saya. Tema ini menukar icon yang terdapat dalam Sublime Text 3. Tema Predawn ini juga menyediakan skema warnanya sendiri iaitu Predawn Monokai

11. Material Theme

Selain daripada Predawn, tema ini juga kelihatan menarik untuk digunapakai pada Sublime Text 3 anda.

12. HTML5

Snippets HTML5 untuk aplikasi Sublime Text 3.

13. HTMLBeautify

Plugin untuk membetulkan format (indents) kod HTML. Tujuan indents ini adalah untuk memudahkan kod kita dibaca oleh pengaturcara lain.
Shortcut-key: Ctrl + Alt + Shift + F

14. SublimeLinter

Sekiranya anda inginkan plugin yang memudahkan anda untuk melihat kesilapan semasa menulis kod, plugin ini adalah pilihan yang terbaik. Kesilapan seperti close bracket yang tertinggal dapat dikesan dengan mudah.

15. GitStatus

Saya baru memasang plugin ini (13/05/2016) dan memudahkan saya untuk melihat status pada¬†setiap perubahan yang dilakukan dalam¬†repository projek. Status ini dipaparkan pada ‘command palette’ seperti¬†Git: Dirty, Git: Clean, Git: Changed files dan Git: Unmerged files

Terdapat juga beberapa plugin yang saya rasa bagus dipasang sekiranya anda menggunakan PHP Framework: Laravel 5 seperti berikut:

1. Laravel 5 Artisan

2. Laravel 5 Snippets

3. Laravel Blade Highlighter

Akhir sekali bagi mereka yang baru menggunakan Sublime Text 3 bolehlah memasang plugin berikut untuk memudahkan serta mempercepatkan kita mempelajari dan mahir menggunakan Sublime Text 3

1. Sublime Tutor

Update: 11/06/2016

1. BracketHighlighter

2. Autoprefixer

Update: 20/04/2017

1. AdvancedNewFile

2. JavaScript & NodeJS Snippets

Update: 12/09/2018

1. All Autocomplete

Comments

WP Travelify Theme Installation

1. Installation

1.1 Through Dashboard (Easy)

  1. Log in to the WordPress Dashboard.
  2. Go to Appearance->Themes.
  3. Click on Install Themes at the top.
  4. Click on Upload tab
  5. Upload travelify.zip file via web interface

Note! Automated installation via WordPress.org coming soon.

1.2 Manual Installation using FTP (Advanced)

  • Go to Travelify page at https://colorlib.com/wp/travelify¬†.
  • Click on Download button to download theme on your desktop.
  • Unzip travelify.zip to your Desktop.
  • Access your host web server using your favorite FTP client (such as¬†Cyberduck or FileZilla etc).
  • Navigate to /wp-content/themes/ and ¬†upload ¬†entire travelify folder.
  • Now open WP admin dashboard and go to Appearance->Themes and activate Travelify theme from there.

2. Custom Menu

travelify menuTravelify supports WordPress Custom Menus. Here is how to use them:

  • In WordPress dashboard go to Appearance->Menus.
  • Give your Custom Menu a name and build it up using little widgets on the left.
  • You can add pages, categories or custom URL‚Äôs.
  • You can drag and drop menu items to¬†arrange¬† them.
  • Now simply select the theme location(Primary Menu) in the upper left corner and choose your newly created custom menu. Afterwards, click Save.

For more information see Custom Menus Help.

3. Custom Background

Travelify theme supports WordPress Custom Backgrounds feature.

  • In WordPress dashboard go to¬†Appearance->Background.
  • You can either set the¬†image or color¬†as background.
  • You can see the background preview on the same setting page.
  • Click Save Changes when you are¬†satisfied¬†with what you see.
  • You can always reset theme default background via WP Customize options.

4.Default Layout Configuration

travelify layoutThere are different layouts for Travelify theme and you can set any layout to be your default layout. This theme has several layout options: No Sidebar, No Sidebar/Full Width, No Sidebar/One Column, Left Sidebar, Right Sidebar. By default theme uses Right Sidebar. To change default Theme Layout follow these instructions:

  • Go to¬†Appearance->Theme Options->Main Options->Layout Options.
  • Choose on of the 5 default¬†layouts.
  • Click on Save all Changes.

5. Specific Layout Per Post/Page

travelify post layoutTravelify theme allows you to choose the specific layout for every post and page display. This will override default theme layout you set on step 5.

  • Open any¬†Post or Page.
  • You will see a box named ‚ÄúSelect layout for this specific Post only‚ÄĚ at the bottom of the post editor page.
  • This feature might be disabled but you can always enable it via¬†Screen Options.
  • If your select Default Layout set in¬†Theme Settings¬†, the layout set in the Theme Options Layout Configuration will be layout for this post as well.
  • Select layout you want to use for this post or page and hit Update to save changes.

6. Set up Homepage Featured Slider

featured-slider

  • Create Post or Page and add featured image to it.
  • Go to Theme Options->Featured Slider
  • Choose how many slides you want to display on front page.
  • Add all the Post ID that you want to use in the featured slider. Post ID can be found at All Posts table in last column
  • Choose transition style and other settings at ‚ÄúSlider Options‚ÄĚ
  • Featured Slider will show featured images, Title and excerpt of the respected added post IDs.
  • The recommended image size is¬†1018px x 460px.

7. Custom CSS

custom-cssTheme allows to use Custom CSS. This feature will overwrite the theme’s default style.css.

  • In the¬†WordPress¬†dashboard go to¬†Appearance->Theme Options->Main Options->Custom CSS(Advanced).
  • Add your own CSS and save it using¬†Save All Changes button.

8. How to Disable Page Comments

disable comments

  • Open¬†particular¬†page on which you want to turn off comments via WP dashboard.
  • Look for the¬†Discussion box¬†below the post editor box.
  • It might be disabled but you can enable it via Screen Options.¬†
  • Uncheck¬†Allow Comments¬†in the¬†Discussion box¬†and hit Update.

9. Recommended Image Sizes

9.1 Featured image size

  • Width: 1018px
  • Height:¬†460px

9.2 Blog Image Large featured images

  • Width: 670px
  • Height: 300px

9.3 Blog Image Medium featured images

  • Width:¬†230px
  • Height:¬†230px

10.How to set up Blog Page

page-attributes You can show your Blog page in three different ways:

  • Large image with excerpt content
  • Medium image with excerpt content
  • Full content display.

You can have a look for examples on Travelify Blog demo Steps to setup blog page:

  • Create a new page, give it a name (for example ‚ÄúBlog‚ÄĚ but you can use any name) and select Blog page template from Template dropdown.
  • Choose between three options: Blog Full Content Display, Blog Image Large, Blog Image Medium.
  • Click Publish.
  • Now all your posts will be shown as per your template selection.

If you want to use this newly created Blog using Blog Template to be used on front page you need to do these extra steps:

  • Go to WordPress Dashboard ‚Äď Settings ‚Äď Reading
  • Select ‚ÄúA static page (select below)‚ÄĚ
  • Choose your previously created blog page for ‚ÄúFront page‚ÄĚ
  • Now save changes and you will see your chosen Blog Template for Blog in homepage

Note: images for each of the post shown in Blog Layout are featured image for that particular post.

11. Translation

Travelify theme is translation ready which means that you can add a new language with ease. No coding skills are required, just plain text input based on existing English queries. More information on WordPress theme translation you can read here.

12. Social Icons

Social icons in the header like you can see in Travelify Demo can be enabled via WordPress dashboard ‚Äď Apperance ‚Äď Theme Options ‚Äď Social. Add full URL to your profile to make icons visible in your website‚Äôs header. Only icons that have valid URLs added will be displayed.
Travelify social icons

13. Change color scheme

Since Travelify 2.0 it is available in 16 million color variations. There are 15 color pickers included to change color of various design elements such as navigation, social icons, buttons, text color and other. These settings and color pickers are based on Theme Customization API and can be accessed via WordPress dashboard ‚Äď Appearance ‚Äď Customize.

Travelify color scheme

Customize Travelify Color Scheme using Theme Customization API

14.Footer copyright information

Footer default copyright information is hard coded and can’t be changed. It will change date and title automatically, so you shouldn’t worry about that.
However, there is another option to customize footer information. Since Travelify 2.0 we have created a custom field to add custom copyright or any other information in footer. This field can be found via WordPress dashboard ‚Äď Appearance ‚Äď Customize ‚Äď Travelify Footer.
Travelify copyright information

This field can handle HTML markup, so you can even add images, icons, formated text or whatever you can come up with

Comments

PHP OOP : Siri1 – Apa itu OOP dalam PHP

Tahun 2016 ini jom kita belajar PHP OOP. PakCu akan cuba untuk menterjemahkan konsep OOP dalam PHP sebaik yang mungkin akan lebih mudah untuk dipahami dan dipelajari. Terlebih dahulu, kita semua perlu buangkan tanggapan bahawa mempelajari OOP adalah sangat susah dan kompleks. Setiap benda sekiranya selalu diamalkan akan menjadi mudah akhirnya. Sebagai contoh, cuba tulis nama ada menggunakan tangan kiri (bagi mereka yang lazimnya menggunakan tangan kanan).

Susah bukan? Walaupun nama tersebut biasa kita tulis tapi apabila kita keluar daripada kelaziman kita; bagi kes ini kita menggunakan tangan kiri untuk menulis nama kita, kita akan dapati benda tersebut sukar dilakukan. Begitu juga dengan mempelajari OOP. Pada awalnya akan ada sedikit kesukaran untuk memahami. Namun setelah kita paham dan tahu cara penggunaannya, ia akan memudah dan memahirkan kita.

Secara kita tidak sedar, ada antara kita sebenarnya telah mula menggunakan konsep, struktur dan fungsi asas yang terdapat dalam OOP. Cuma dalam OOP, ia mempunya istilahnya sendiri seperti properties, methods, encaplution, instance dan sebagainya. Insyallah tutorial PHP OOP akan ada beberapa bahagian/siri. Untuk Siri 1 kali ini, PakCu akan lebih kepada pengenalan kepada OOP. Banyak PHP framework yang terdapat dalam pasaran menggunakan konsep OOP dalam struktur framework mereka. Ini disebabkan fungsi OOP telah mengalami perubahan yang besar setelah PHP5 diperkenalkan.


Classes, Properties dan Methods

Class adalah satu blueprint @ template yang menerangkan sesuatu objek. Melalui template ini, berbagai objek yang sama tetapi mempunyai ciri-ciri yang berbeza dapat dihasilkan. Sebagai contoh objek ialah pengguna, apabila kita membina class pengguna ia akan mengandungi maklumat/data/ciri-ciri pengguna. Di dalam OOP, ciri-ciri ini dikenali sebagai properties dan methods.

Untuk menambah/menetapkan data ke dalam sesuatu class, kita menggunakan properties atau lebih dikenali sebagai variables dalam procedural PHP. Contoh properties yang boleh ditetapkan dalam class pengguna adalah id pengguna, email, jantina dan sebagainya.

Method pula adalah kaedah yang lazimnya dipanggil function dalam procedural PHP. Contoh methods yang boleh dicipta dalam class pengguna adalah daftar masuk, daftar keluar, tambah pengguna, hapus pengguna dan sebagainya.

Setelah class dihasilkan,¬†class ini boleh digunakan untuk menetapkan/mencipta pelbagai pengguna lain tetapi berbeza data/maklumat/ciri. Jadi kenapa perlu belajar OOP ini? Dengan adanya ilmu OOP ini kita tidak lagi perlu menulis kod-kod pengaturcaraan secara berulang-ulang untuk sesuatu fungsi. Terdapat istilah DRY (Don’t Repeat Yourself)¬†yang perlu kita amalkan¬†dalam menghasilkan sesuatu aplikasi agar¬†kod kita lebih teratur, mudah dipahami dan yang paling penting senang untuk diselenggara pada masa akan datang sekiranya perlu.

Jumpa lagi di Siri 2 akan datang dengan tajuk Mencipta dan Menggunakan Class.

Comments

mySQL Group By

Katakan kita ada set of data seperti di bawah:

id username name
-------------------------
1 ahmad   Ahmad Fuad
2 bakri   Mohd Bakri
3 zul     Zulkifli
4 ahmad   Ahmad Fuad

dan kita hendak paparkan senarai user menggunakan fungsi GROUP BY

$sa = "SELECT * FROM table
WHERE id IN (
SELECT MAX(id) FROM table
GROUP BY username
)
ORDER BY name ASC
";

Bagi pengguna mysql, kod di atas akan memaparkan senarai pengguna tanpa duplicate username melalui penggunaan fungsi GROUP BY serta baris yang terakhir untuk data berkenaan. Bagi kes ini, id pengguna bernama Ahmad Fuad adalah 4. Fungsi subquery adalah untuk mendapatkan id terakhir (menggunakan fungsi MAX) setelah username di group by.

Comments

Bengkel KIK

Baru balik dari Kuantan kerena menghadiri Bengkel KIK yang dianjurkan oleh Pusat Perubatan UKM di bawah consultant En. Kman. Terbaik input daripada En. Kman ni; xNPC. 3 hari di Hotel Grand Continental. Perjalanan pergi mengambil masa 4-5 jam dengan kelajuan 90-100 km/h menggunakan kereta. Bengkel KIK berjalan dengan lancar. Secara keseluruhan, jadual tidak terlalu ketat dan kaedah pengendalian bengkel secara bersantai. Consultant, penganjur dan peserta semua best!

Buat pertama kali saya memandu ke Kuantan. Perjalanan yang lancar (sebab bukan musim perayaan @ cuti sekolah). Daripada Sungai Besi terus tanpa henti ke Kuantan mengambil masa lebih kurang 4 jam 15 minit. Saya ikut lebuhraya Karak-LPT dan keluar di Gambang. Kemudian melalui jalan bandar sampailah ke Kuantan. Kuantan pada saya tidak banyak tempat menarik; mungkin saya tidak tahu tempat menarik di Kuantan. Saya sempat pergi ke Tangjung Lumpur, Telok Cempedak dan pusing-pusing Bandar Kuantan.

Makanan di Kuantan MAHAL! Sepinggan Char Kuew Teow berharga RM6.00 dengan HANYA seekor udang dan segelas air kosong berharga RM0.55 (termasuk GST). Itu belum lagi makan di restoran. Roti bom RM2.90. Nasib ada Tanjung Lumpur. Makan di kawasan situ tidak terlalu mahal dan hampir sama kadar di Kuala Lumpur. Jika anda pergi ke Tanjung Lumpur, saya sarankan makan di Aina Ikan Bakar Petai. Murah dan sedap. Malah ada yang kata cawangan di Kuantan ini lebih sedap daripada di Bandar Baru Bangi. Jika hendak beli keropok lekor dan sata, sila ke Pasar Peramu. Ikan fresh naik dari laut.

Sempat juga berjumpa kawan lama, Abang Nazri dari PCNet System. Alhamdulillah, rezeki Allah ada dimana-mana, bro! Terima kasih atas layanan dan keropok :p. Saya mendoakan agar Abang Nazri dimurahkan lagi rezeki dan diberkatkan usia.

Comments

Kursus PHP & mySQL : Asas

20120524 - RTM-StreamDotMy Sdn Bhd

11879286_10153536823247145_8803056549551592740_oTarikh: 24 – 26 Ogos, 2015
Tempat: IPPTAR, Angkasapuri, Kuala Lumpur
Oleh: Stream.My (Thanks En Azril dan Nazril)

Comments