PHP 7.4 Upgrade Notes

PHP 7.4 Upgrade Notes

1. Backward Incompatible Changes
2. New Features
3. Changes in SAPI modules
4. Deprecated Functionality
5. Changed Functions
6. New Functions
7. New Classes and Interfaces
8. Removed Extensions and SAPIs
9. Other Changes to Extensions
10. New Global Constants
11. Changes to INI File Handling
12. Windows Support
13. Migration to pkg-config
14. Other Changes
15. Performance Improvements

========================================
1. Backward Incompatible Changes
========================================

– Core:
. Trying to use values of type null, bool, int, float or resource as an
array (such as $null[“key”]) will now generate a notice. This does not
affect array accesses performed by list().
RFC: https://wiki.php.net/rfc/notice-for-non-valid-array-container
. get_declared_classes() no longer returns anonymous classes that haven’t
been instantiated yet.
. “fn” is now a reserved keyword. In particular it can no longer be used as a
function or class name. It can still be used as a method or class constant
name.
. Passing the result of a (non-reference) list() assignment by reference is
consistently disallowed now. Previously this worked if the right hand side
was a simple (CV) variable and did not occur as part of the list().
. `<?php` at the end of the file (without trailing newline) will now be
interpreted as an opening PHP tag. Previously it was interpreted either as
`<? php` and resulted in a syntax error (with short_open_tag=1) or was
interpreted as a literal `<?php` string (with short_open_tag=0).
. When using include/require on a stream, stream_set_option() will be invoked
with the STREAM_OPTION_READ_BUFFER option. Custom stream wrapper
implementations may need to implement the stream_set_option() method to
avoid a warning (always returning false is a sufficient implementation).

– BCMath:
. BCMath functions will now warn if a non well-formed number is passed, such
as “32foo”. The argument will be interpreted as zero (as before).

– Curl:
. Attempting to serialize a CURLFile class will now generate an exception.
Previously the exception was only thrown on unserialization.
. Using CURLPIPE_HTTP1 is deprecated, and is no longer supported as of cURL
7.62.0.
. The $version parameter of curl_version() is deprecated. If any value not
equal to the default CURLVERSION_NOW is passed, a warning is raised and the
parameter is ignored.

– Date:
. Calling var_dump() or similar on a DateTime(Immutable) instance will no
longer leave behind accessible properties on the object.
. Comparison of DateInterval objects (using ==, < and so on) will now generate
a warning and always return false. Previously all DateInterval objects were
considered equal, unless they had properties.

– Intl:
. The default parameter value of idn_to_ascii() and idn_to_utf8() is now
INTL_IDNA_VARIANT_UTS46 instead of the deprecated INTL_IDNA_VARIANT_2003.

– MySQLi:
. The embedded server functionality has been removed. It was broken since
at least PHP 7.0.
. The undocumented mysqli::$stat property has been removed in favor of
mysqli::stat().

– Openssl:
. The openssl_random_pseudo_bytes() function will now throw an exception in
error situations, similar to random_bytes(). In particular, an Error is
thrown if the number of requested bytes is less than *or equal to* zero,
and an Exception is thrown if sufficient randomness cannot be gathered.
The $crypto_strong output argument is guaranteed to always be true if the
function does not throw, so explicitly checking it is not necessary.
RFC: http://php.net/manual/de/function.openssl-random-pseudo-bytes.php

– PCRE:
. When PREG_UNMATCHED_AS_NULL mode is used, trailing unmatched capturing
groups will now also be set to null (or [null, -1] if offset capture is
enabled). This means that the size of the $matches will always be the same.

– PEAR:
. Installation of PEAR (including PECL) is no longer enabled by default. It
can be explicitly enabled using –with-pear. This option is deprecated and
may be removed in the future.

– PDO:
. Attempting to serialize a PDO or PDOStatement instance will now generate
an Exception rather than a PDOException, consistent with other internal
classes which do not support serialization.

– Reflection:
. Reflection objects will now generate an exception if an attempt is made
to serialize them. Serialization for reflection objects was never
supported and resulted in corrupted reflection objects. It has been
explicitly prohibited now.

– SPL:
. Calling get_object_vars() on an ArrayObject instance will now always return
the properties of the ArrayObject itself (or a subclass). Previously it
returned the values of the wrapped array/object unless the STD_PROP_LIST
flag was specified. Other affected operations are:

* ReflectionObject::getProperties()
* reset(), current(), etc. Use Iterator methods instead.
* Potentially others working on object properties as a list.

(array) casts are *not* affected. They will continue to return either the
wrapped array, or the ArrayObject properties, depending on whether the
STD_PROP_LIST flag is used.
. SplPriorityQueue::setExtractFlags() will throw an exception if zero is
passed. Previously this would generate a recoverable fatal error on the
next extraction operation.
. ArrayObject, ArrayIterator, SplDoublyLinkedList and SplObjectStorage now
support the __serialize() + __unserialize() mechanism in addition to the
Serializable interface. This means that serialization payloads created on
older PHP versions can still be unserialized, but new payloads created by
PHP 7.4 will not be understood by older versions.

– Standard:
. The “o” serialization format has been removed. As it is never produced by
PHP, this may only break unserialization of manually crafted strings.
. Password hashing algorithm identifiers are now nullable strings rather
than integers.

* PASSWORD_DEFAULT was int 1; now is null
* PASSWORD_BCRYPT was int 1; now is string ‘2y’
* PASSWORD_ARGON2I was int 2; now is string ‘argon2i’
* PASSWORD_ARGON2ID was int 3; now is string ‘argon2id’

Applications correctly using the constants PASSWORD_DEFAULT,
PASSWORD_BCRYPT, PASSWORD_ARGON2I, and PASSWORD_ARGON2ID will continue to
function correctly.
. htmlentities() will now throw a notice (instead of a strict standards
warning) if it is used with an encoding for which only basic entity
substitution is supported, in which case it is equivalent to
htmlspecialchars().
. fread() and fwrite() will now return false if the operation failed.
Previously an empty string or 0 was returned. EAGAIN/EWOULDBLOCK are not
considered failures.
. fread() and fwrite() on plain files will now throw a notice on failure,
such as when trying to write to a read-only file resource.

– Tokenizer:
. token_get_all() will now emit a T_BAD_CHARACTER token for unexpected
characters instead of leaving behind holes in the token stream.

========================================
2. New Features
========================================

– Core:
. Added support for typed properties. For example:

class User {
public int $id;
public string $name;
}

This will enforce that $user->id can only be assigned integers and
$user->name can only be assigned strings. For more information see the
RFC: https://wiki.php.net/rfc/typed_properties_v2

. Added support for arrow functions with implicit by-value scope binding.
For example:

$factor = 10;
$nums = array_map(fn($num) => $num * $factor, $nums);

RFC: https://wiki.php.net/rfc/arrow_functions_v2

. Added support for limited return type covariance and argument type
contravariance. The following code will now work:

class A {}
class B extends A {}

class Producer {
public function method(): A {}
}
class ChildProducer extends Producer {
public function method(): B {}
}

Full variance support is only available if autoloading is used. Inside a
single file only non-cyclic type references are possible, because all
classes need to be available before they are referenced.
RFC: https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters

. Added support for coalesce assign (??=) operator. For example:

$array[‘key’] ??= computeDefault();
// is roughly equivalent to
if (!isset($array[‘key’])) {
$array[‘key’] = computeDefault();
}

RFC: https://wiki.php.net/rfc/null_coalesce_equal_operator

. Added support for unpacking inside arrays. For example:

$arr1 = [3, 4];
$arr2 = [1, 2, …$arr1, 5];
// $arr2 == [1, 2, 3, 4, 5]

RFC: https://wiki.php.net/rfc/spread_operator_for_array

. Added support for underscore separators in numeric literals. Some examples:

6.674_083e-11; // float
299_792_458; // decimal
0xCAFE_F00D; // hexadecimal
0b0101_1111; // binary

RFC: https://wiki.php.net/rfc/numeric_literal_separator

. Support for WeakReferences has been added.
RFC: https://wiki.php.net/rfc/weakrefs

. Throwing exceptions from __toString() is now permitted. Previously this
resulted in a fatal error. Existing recoverable fatals in string conversions
have been converted to Error exceptions.
RFC: https://wiki.php.net/rfc/tostring_exceptions

– CURL:
. CURLFile now supports stream wrappers in addition to plain file names, if
the extension has been built against libcurl >= 7.56.0. The streams may
need to be seekable.

– Filter:
. The FILTER_VALIDATE_FLOAT filter now supports the min_range and max_range
options, with the same semantics as FILTER_VALIDATE_INT.

– FFI:
. A new extension which provides a simple way to call native functions, access
native variables and create/access data structures defined in C libraries.
RFC: https://wiki.php.net/rfc/ffi

– GD:
. Added the “scatter” image filter (IMG_FILTER_SCATTER) to apply a scatter
filter to images. This filter has the following prototype:

imagefilter($im, IMG_FILTER_SCATTER, int $sub, int $plus, array $colors = []);

The $colors array can be populated with a set of indexed colors to
apply the scatter pixel shifting on.

Note, the result of this filter is always random.

– Hash:
. Added “crc32c” hash using Castagnoli’s polynomial. This crc32 variant is
used by storage systems, such as iSCSI, SCTP, Btrfs and ext4.

– Mbstring:
. Added mb_str_split() function, which provides the same functionality as
str_split(), but operating on code points rather than bytes.
RFC: https://wiki.php.net/rfc/mb_str_split

– OPcache:
. Support for preloading code has been added.
RFC: https://wiki.php.net/rfc/preload

– PCRE:
. The preg_replace_callback() and preg_replace_callback_array() functions now
accept an additional $flags argument, with support for the
PREG_OFFSET_CAPTURE and PREG_UNMATCHED_AS_NULL flags. This influences the
format of the matches array passed to to the callback function.

– PDO:
. The username and password can now be specified as part of the PDO DSN for
the mysql, mssql, sybase, dblib, firebird and oci drivers. Previously this
was only supported by the pgsql driver. If a username/password is specified
both in the constructor and the DSN, the constructor takes precedence.

new PDO(“mysql:host=xxx;port=xxx;dbname=xxx;user=xxx;password=xxx”);

– PDO_OCI:
. PDOStatement::getColumnMeta() is now available

– PDO_SQLite:
. PDOStatement::getAttribute(PDO::SQLITE_ATTR_READONLY_STATEMENT) allows
checking whether the statement is read-only, i.e. if it doesn’t modify
the database.
. PDO::setAttribute(PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES, true) enables the
use of SQLite3 extended result codes in errorInfo().

– SQLite3:
. Added SQLite3::lastExtendedErrorCode() to fetch the last extended result
code.
. Added SQLite3::enableExtendedResultCodes($enable = true), which will make
SQLite3::lastErrorCode() return extended result codes.

– Standard:
. strip_tags() now also accepts an array of allowed tags: Instead of
strip_tags($str, ‘<a><p>’) you can now write strip_tags($str, [‘a’, ‘p’]).

. A new mechanism for custom object serialization has been added, which
uses two new magic methods:

// Returns array containing all the necessary state of the object.
public function __serialize(): array;

// Restores the object state from the given data array.
public function __unserialize(array $data): void;

The new serialization mechanism supersedes the Serializable interface,
which will be deprecated in the future.

RFC: https://wiki.php.net/rfc/custom_object_serialization

. array_merge() and array_merge_recursive() may now be called without any
arguments, in which case they will return an empty array. This is useful
in conjunction with the spread operator, e.g. array_merge(…$arrays).

. proc_open() now accepts an array instead of a string for the command. In
this case the process will be opened directly (without going through a
shell) and PHP will take care of any necessary argument escaping.

proc_open([‘php’, ‘-r’, ‘echo “Hello World\n”;’], $descriptors, $pipes);

. proc_open() now supports “redirect” and “null” descriptors. For example:

// Like 2>&1 on the shell
proc_open($cmd, [1 => [‘pipe’, ‘w’], 2 => [‘redirect’, 1]], $pipes);
// Like 2>/dev/null or 2>nul on the shell
proc_open($cmd, [1 => [‘pipe’, ‘w’], 2 => [‘null’]], $pipes);

. password_hash() has argon2i(d) implementations from ext/sodium when PHP is
built without libargon.

RFC: https://wiki.php.net/rfc/sodium.argon.hash

========================================
3. Changes in SAPI modules
========================================

========================================
4. Deprecated Functionality
========================================

– Core:
. Nesting ternary operators without explicit parentheses is deprecated:

// Code like
$a ? $b : $c ? $d : $e
// should be replaced by (current interpretation)
($a ? $b : $c) ? $d : $e
// or (likely intended interpretation)
$a ? $b : ($c ? $d : $e)

RFC: https://wiki.php.net/rfc/ternary_associativity
. The array and string offset access syntax using curly braces is deprecated.
Use $str[$idx] instead of $str{$idx}.
RFC: https://wiki.php.net/rfc/deprecate_curly_braces_array_access
. The (real) cast is deprecated, use (float) instead.
. Unbinding $this of a non-static method through a combination of
ReflectionMethod::getClosure() and closure rebinding is deprecated. Doing
so is equivalent to calling a non-static method statically, which has been
deprecated since PHP 7.0.
. Unbinding $this of a non-static closure is deprecated.
. Using “parent” inside a class without a parent is deprecated, and will throw
a compile-time error in the future. Currently an error will only be
generated if/when the parent is accessed at run-time.
. The allow_url_include ini directive is deprecated. Enabling it will generate
a deprecation notice at startup.

– COM:
. Importing type libraries with case-insensitive constant registering has been
deprecated.

– Filter:
. FILTER_SANITIZE_MAGIC_QUOTES is deprecated, use FILTER_SANITIZE_ADD_SLASHES
instead.

– Mbstring:
. Passing a non-string pattern to mb_ereg_replace() is deprecated. Currently
non-string patterns are interpreted as ASCII codepoints. In PHP 8 the
pattern will be interpreted as a string instead.
. Passing the encoding as 3rd parameter to mb_strrpos() is deprecated. Instead
pass a 0 offset and encoding as 4th parameter.

– LDAP:
. ldap_control_paged_result_response and ldap_control_paged_result are
deprecated. Pagination controls can be sent along with ldap_search instead.

– Reflection:
. Calls to ReflectionType::__toString() now generate a deprecation notice.
This method has been deprecated in favor of ReflectionNamedType::getName()
in the documentation since PHP 7.1, but did not throw a deprecation notice
for technical reasons.
. The export() methods on all Reflection classes are deprecated. Construct a
Reflection object and convert it to string instead:

// ReflectionClass::export(Foo::class, false) is:
echo new ReflectionClass(Foo::class), “\n”;
// $str = ReflectionClass::export(Foo::class, true) is:
$str = (string) new ReflectionClass(Foo::class);

– Standard:
. Passing invalid characters to ”base_convert()”, ”bindec()”, ”octdec()”
and ”hexdec()” will now generate a deprecation notice. The result will
still be computed as if the invalid characters did not exist. Leading and
trailing whitespace, as well as prefixes of type 0x (depending on base)
continue to be allowed.
. Using array_key_exists() on objects is deprecated. Instead either isset()
or property_exists() should be used.
. The is_real() function is deprecated, use is_float() instead.
. The get_magic_quotes_gpc() and get_magic_quotes_runtime() functions are
deprecated. They always return false.
. The hebrevc() function is deprecated. It can be replaced with
nl2br(hebrev($str)), or preferably the use of Unicode RTL support.
. The convert_cyr_string() function is deprecated. It can be replaced by one
of mb_convert_string(), iconv() or UConverter.
. The money_format() function is deprecated. It can be replaced by the
intl NumberFormatter functionality.
. The ezmlm_hash() function is deprecated.
. The restore_include_path() function is deprecated. It can be replaced by
ini_restore(‘include_path’).
. Passing parameters to implode() in reverse order is deprecated, use
implode($glue, $parts) instead of implode($parts, $glue).

========================================
5. Changed Functions
========================================

– SPL:
. SplFileObject::fputcsv(), ::fgetcsv() and ::setCsvControl() now accept an
empty string as $escape argument, which disables the proprietary PHP
escaping mechanism. SplFileObject::getCsvControl() now may also return an
empty string for the third array element, accordingly.

– Standard:
. fputcsv() and fgetcsv() now accept an empty string as $escape argument,
which disables the proprietary PHP escaping mechanism. The behavior of
str_getcsv() has been adjusted accordingly (formerly, an empty string was
identical to using the default).
. proc_open() on Windows can be passed a “create_process_group” option. It
is required, if the child process is supposed to handle CTRL events.
. password_hash() now accepts nullable string and int as $algo argument.
. password_needs_rehash() now accepts nullable string and int as $algo
argument.

========================================
6. New Functions
========================================

– Core:
. Added get_mangled_object_vars($object) function, which returns the mangled
object properties. It returns the same result as (array) $object, with the
exception that it ignores overloaded array casts, such as used by
ArrayObject.

– GD:
. Added imagecreatefromtga() function, which allows reading images in TGA
format. TGA support is now also indicated by gd_info() and imagetypes().
Note that TGA images are not recognized by imagecreatefromstring() and
getimagesize().

– OpenSSL:
. Added openssl_x509_verify(mixed cert, mixed key) function that verifies the
signature of the certificate using a public key. A wrapper around the
OpenSSL’s X509_verify() function.
See <https://github.com/php/php-src/pull/3624>.

– Pcntl:
. Added bool pcntl_unshare(int flags) function which allows dissociating
parts of the process execution context which are currently being shared with
other processes. Explicitly, it allows you to unshare the mount, IPC, UTS,
network, PID, user and cgroup namespaces.

– SQLite3:
. Added SQLite3Stmt::getSQL() to retrieve the SQL of the statement. If true is
passed as $expanded argument, query parameters will be replaced in the
return value by their currently bound value, if libsqlite ≥ 3.14 is used.
. Added SQLite3::backup() to create database backups via the SQLite3 online
backup API.

– Standard
. bool sapi_windows_set_ctrl_handler(callable handler, [, bool add = true]) –
set or remove a handler function upon receiving a CTRL event. The handler
function is expected to have this signature: “function handler(int $event)”.
. bool sapi_windows_generate_ctrl_event(int type, int pid) – send a CTRL event
to another process.
. array password_algos() – return a complete list of all registered password
hashing algorithms. For more details see the RFC:
https://wiki.php.net/rfc/password_registry

========================================
7. New Classes and Interfaces
========================================

– Reflection:
. A new ReflectionReference class has been added, which allows detecting
references and comparing them for identity. For more details see the RFC:
https://wiki.php.net/rfc/reference_reflection

========================================
8. Removed Extensions and SAPIs
========================================

– Interbase:
. The interbase extension has been moved to PECL. Access to an InterBase
and/or FireBird based database is still available with the PDO_Firebird
extension. For more details see the RFC:
https://wiki.php.net/rfc/deprecate-and-remove-ext-interbase

– Recode:
. The recode extension has been moved to PECL. For character set/encoding
conversion the iconv or mbstring extensions could be used instead.
RFC: https://wiki.php.net/rfc/unbundle_recode

– WDDX:
. The WDDX extension has been deprecated and moved to PECL.
RFC: https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx

========================================
9. Other Changes to Extensions
========================================

– GD:
. The behavior of imagecropauto() in the bundled libgd has been synced with
that of system libgd:
* IMG_CROP_DEFAULT is no longer falling back to IMG_CROP_SIDES
* Threshold-cropping now uses the algorithm of system libgd
. The default $mode parameter of imagecropauto() has been changed to
IMG_CROP_DEFAULT; passing -1 is now deprecated.
. imagescale() now supports aspect ratio preserving scaling to a fixed height
by passing -1 as $new_width.

– Filter:
. The filter extension no longer exposes –with-pcre-dir for Unix builds and
can now reliably be built as shared when using ./configure once more.

– Hash:
. The hash extension cannot be disabled anymore and is always an integral part
of any PHP build, similar to the date extension.

– Intl:
. The Intl extension now requires at least ICU 50.1.
. ResourceBundle now implements Countable.

– Libxml:
. All libxml based extensions now require libxml 2.7.6 or newer.

– Mbstring:
. The oniguruma library is no longer bundled with PHP, instead libonig needs
to be available on the system. Alternatively –disable-mbregex can be used
to disable the mbregex component.

– OPcache:
. The –disable-opcache-file|–enable-opcache-file configure options have been
removed in favor of the opcache.file_cache INI directive.

– PDO:
. It is now possible to escape question marks in SQL queries to avoid them
being interpreted as parameter placeholders. Writing “??” allows sending
a single question mark to the database and e.g. use the PostgreSQL JSON key
exists “?” operator. For more details see the RFC:
https://wiki.php.net/rfc/pdo_escape_placeholders

– Reflection:
. Numeric value of class, property, function and constant modifiers was
changed. Don’t filter methods and properties through
ReflectionClass::getMethods() and ReflectionClass::getProperties(), or test
results of Reflection…::getModifiers(), using hard-coded numeric values.
Use corresponding constants instead (e.g. ReflectionMethod::IS_PUBLIC).

– SimpleXML:
. SimpleXMLElement now implements Countable.

– SQLite3:
. The bundled libsqlite has been removed. To build the SQLite3 extension a
system libsqlite3 ≥ 3.7.4 is now required. To build the PDO_SQLite extension
a system libsqlite3 ≥ 3.5.0 is now required.
. (Un)serialization of SQLite3, SQLite3Stmt and SQLite3Result is now
explicitly forbidden. Formerly, serialization of instances of these classes
was possible, but unserialization yielded unusable objects.
. The @param notation can now also be used to denote SQL query parameters.

– Zip:
. The bundled libzip library has been removed. A system libzip >= 0.11 is now
necessary to build the extension.

========================================
10. New Global Constants
========================================

– Mbstring:
. MB_ONIGURUMA_VERSION specifies the version of the oniguruma library against
which mbregex has been built.

– Socket:
. Added FreeBSD-specific socket options:
. SO_LABEL
. SO_PEERLABEL
. SO_LISTENQLIMIT
. SO_LISTENQLEN
. SO_USER_COOKIE

– Standard:
. PHP_WINDOWS_EVENT_CTRL_C
. PHP_WINDOWS_EVENT_CTRL_BREAK

– Tidy:
. TIDY_TAG_ARTICLE
. TIDY_TAG_ASIDE
. TIDY_TAG_AUDIO
. TIDY_TAG_BDI
. TIDY_TAG_CANVAS
. TIDY_TAG_COMMAND
. TIDY_TAG_DATALIST
. TIDY_TAG_DETAILS
. TIDY_TAG_DIALOG
. TIDY_TAG_FIGCAPTION
. TIDY_TAG_FIGURE
. TIDY_TAG_FOOTER
. TIDY_TAG_HEADER
. TIDY_TAG_HGROUP
. TIDY_TAG_MAIN
. TIDY_TAG_MARK
. TIDY_TAG_MENUITEM
. TIDY_TAG_METER
. TIDY_TAG_NAV
. TIDY_TAG_OUTPUT
. TIDY_TAG_PROGRESS
. TIDY_TAG_SECTION
. TIDY_TAG_SOURCE
. TIDY_TAG_SUMMARY
. TIDY_TAG_TEMPLATE
. TIDY_TAG_TIME
. TIDY_TAG_TRACK
. TIDY_TAG_VIDEO

========================================
11. Changes to INI File Handling
========================================

– zend.exception_ignore_args
. New INI directive to include or exclude arguments from stack traces
generated for exceptions.

========================================
12. Windows Support
========================================

– stat:
. The stat implementation has been refactored.
– An inode number is delivered and is based on the NTFS file index.
– The device number is now based on the volume serial number.

Note that both values are derived from the system and provided as is on 64-bit
systems. On 32-bit systems, these values might overflow the 32-bit integer in
PHP, so they’re fake.

– CTRL+C and CTRL+BREAK on console can be caught by setting a handler function
with sapi_windows_set_ctrl_handler().

– configure now regards additional CFLAGS and LDFLAGS set as environment
variables.

– OPcache now supports an arbitrary amount of separate caches per user via the
the INI directive opcache.cache_id. All processes with the same cache ID and
user share an OPcache instance.

========================================
13. Migration to pkg-config
========================================

A number of extensions have been migrated to exclusively use pkg-config for the
detection of library dependencies. Generally, this means that instead of using
–with-foo-dir=DIR or similar only –with-foo is used. Custom library paths can
be specified either by adding additional directories to PKG_CONFIG_PATH or by
explicitly specifying compilation options through FOO_CFLAGS and FOO_LIBS.

The following extensions and SAPIs are affected:

– Curl:
. –with-curl no longer accepts a directory.

– Enchant:
. –with-enchant no longer accepts a directory.

– FPM:
. –with-fpm-systemd now uses only pkg-config for libsystem checks. The
libsystemd minimum required version is 209.

– GD:
. –with-gd becomes –enable-gd (whether to enable the extension at all) and
–with-external-gd (to opt into using an external libgd, rather than the
bundled one).
. –with-png-dir has been removed. libpng is required.
. –with-zlib-dir has been removed. zlib is required.
. –with-freetype-dir becomes –with-freetype.
. –with-jpeg-dir becomes –with-jpeg.
. –with-webp-dir becomes –with-webp.
. –with-xpm-dir becomes –with-xpm.

– IMAP:
. –with-kerberos no longer accepts a directory.

– Intl:
. –with-icu-dir has been removed. If –enable-intl is passed, then libicu is
always required.

– Ldap:
. –with-ldap-sasl no longer accepts a directory.

– Libxml:
. –with-libxml-dir has been removed.
. –enable-libxml becomes –with-libxml.
. –with-libexpat-dir has been renamed to –with-expat and no longer accepts a
directory.

– LiteSpeed:
. –with-litespeed becomes –enable-litespeed.

– Mbstring:
. –with-onig has been removed. Unless –disable-mbregex has been passed,
libonig is required.

– ODBC:
. –with-iodbc no longer accepts a directory.
. –with-unixODBC without a directory now uses pkg-config (preferred).
Directory is still accepted for old versions without libodbc.pc.

– OpenSSL:
. –with-openssl no longer accepts a directory.
. –with-kerberos no longer accepts a directory.

– PCRE:
. –with-pcre-regex has been removed. Instead –with-external-pcre is provided
to opt into using an external PCRE library, rather than the bundled one.

– PDO_SQLite:
. –with-pdo-sqlite no longer accepts a directory.

– Readline:
. –with-libedit no longer accepts a directory.

– Sodium:
. –with-sodium no longer accepts a directory.

– SQLite3:
. –with-sqlite3 no longer accepts a directory.

– XSL:
. –with-xsl no longer accepts a directory.

– Zip:
. –with-libzip has been removed.
. –enable-zip becomes –with-zip.

========================================
14. Other Changes
========================================

========================================
15. Performance Improvements
========================================

– Core:
. A specialized VM opcode for the array_key_exists() function has been added,
which improves performance of this function if it can be statically
resolved. In namespaced code, this may require writing \array_key_exists()
or explicitly importing the function.

– PCRE:
. When preg_match() in UTF-8 mode (“u” modifier) is repeatedly called on the
same string (but possibly different offsets), it will only be checked for
UTF-8 validity once.

Referrence: PHP.Net

Comments

Petua Hilangkan Bengkak

Bengkak boleh berlaku disebabkan pelbagai punca. Tergeliat, terseliuh, cedera semasa bersukan, kemalangan, dan sebagainya. Jom kami kongsikan petua hilangkan bengkak khas untuk anda.

petua hilangkan bengkak 

1. Tepung gandum & halia

Bahan-bahan yang diperlukan ialah:

  • Tepung Gandum
  • Halia

Cara-cara menggunakannya:

  • Ambil halia secukupnya dan tumbuk dengan lesung batu. Nak blender pun boleh
  • Setelah hancur campurkan dengan sedikit tepung gandum. Jangan terlalu banyak cukup sekadar menjadi agen pelekat sahaja
  • Tampalkan pada kawasan yang sedang membengkak. Lazimnya bahagian yang ditampal akan terasa panas sedikit, jangan risau biarkan saja. Jika terlampau panas boleh kurangkn dos halia yang digunakan mengikut kesesuaian.
  • Biarkan selama satu jam
  • Petua ini boleh dibuat setiap hari sehingga bengkak kembali kecut

Selain menghilangkan bengkak, petua di atas juga boleh digunakan untuk melegakan sakit urat seperti terseliuh, sakit pinggang, sakit lutut, lenguh-lenguh belakang atau mana-mana bahagian tubuh, amsa, sesak nafas, perut kembung. Caranya hanya perlu tampalkan atau lumurkan pada bahagian-bahagian yang bermasalah.

Untuk merawat masalah lutut, lumurkan bahan yang telah siap ini ke seluruh lutut termasuk bahagian pelipat , dan lebihkan 3 inci ke atas bahagianlutut ,iaitu sebahagian daripada peha.

2. Halia

Tumbuk halia dan tampal pada tempat bengkak. Tutup dengan daun yang lebar atau plastik, kemudian balutkan dgn kain atau bandage. Petua ini membantu mengecutkan bengkak, melancarkn pengaliran darah, melembutkan urat yang tegang, dan membuang angin yang tersekat seperti perut kembung akibat angin.

petua hilangkan bengkak

3. Beras, lengkuas & air

Hanya 3 bahan  diperlukan untuk surutkan bengkak menggunakan petua ini. Bahan-bahannya:

  • Segenggam beras
  • Segenggam lengkuas
  • Sedikit air

Caranya: Beras direndam 1 jam sebelum ditumbuk. Lengkuas pula dibasuh hingga bersih. Tak perlu dibuang kulitnya. Tumbuk kedua-dua bahan tadi hingga lumat. Bila dah agak hancur, boleh tambahkan sedikit air. Teruskan menumbuk hingga betul-betul halus. Bila dah hancur, boleh masukkan ke dalam bekas. Siap untuk digunakan. Sapu rata pada bahagian yang bengkak. Biarkan seketika supaya bahan-bahan meresap. Bila dah agak kering, bolehlah bilas semula dengan air bersih. Sapu waktu malam biarkan semalaman. InsyaAllah esok pagi dah susut.

4. Petua hilangkan bengkak kaki akibat mengandung

>Wanita mengandung biasanya akan mengalami bengkak kaki apabila kandungan semakin besar. Jika anda mengalaminya, boleh amalkan petua dibawah:

1. Lumurkan asam jawa &  garam pada kaki dan tangan yang bengkak, Biarkan semalam 30 minit hingga 1 jam.

2. Posisikan kaki lebih tinggi dari dada. Hal ini dapat membantu mengurangkan gejala kaki bengkak kerana mempermudahkan aliran darah kembali ke jantung.

3. Kurangkan pengambilan garam dalam makanan. Kaki bengkak terjadi kerana ketika hamil seorang wanita mengalami perubahan kadar hormon. Pelepasan hormon-hormon sepanjang kehamilan menyebabkan tubuh menahan lebih banyak cairan dan sodium (garam).

4. Rajin bersenam. Jangan berbaring atau duduk. Banyakkan pergerakan badan dan lakukan senaman ringan. Berjalan-jalan di shopping complex pun ok.

5. Tinggikan kaki semasa duduk atau baring. Sewaktu duduk pastikan kaki bengkak sentiasa melunjur. Jangan biar tergantung di bawah. Sewaktu baring atau tidur, kaki bengkak hendaklah lebih tinggi daripada badan. Boleh alas bantal di bawah kaki.

5. Petua hilangkan bengkak akibat patah atau retak

Ini adalah petua tradisional yang sangat berkesan. Bahan-bahan yang diperlukan:

  • 2 batang serai
  • Telur putih
  • Sehelai daun melung (juga dikenali sebagai daun tembaga suasa)
  • Kain Pembalut

Caranya, tumbuk serai sehingga lumat, masukkan putih telur. Jangan sampai berair, agak-agak sesuai dengan serai. Balut bersama dengan daun melung dan akhir sekali sudahkan balutan dengan kain pembalut, ikat agar serai tak beralih tempat. Pakai sebelum tidur  selama 3 malam berturut-turut, pagi esok boleh dibasuh.

6. Jangan urut

Elakkan terus mengurut kawasan yang bengkak. Mengurut tempat bengkak adalah sangat menyakitkan dan boleh menyebabkan bengkak lebih teruk. Urutan hanya dibenarkan selepas 48-72 jam bengkak berlaku.

7. Jangan tuam haba

Tuaman haba akan menyebabkan salur darah mengembang lantas mempercepatkan dan mempertingkatkan proses keradangan. Tuaman menggunakan haba hanya dibenarkan selepas 48-72 jam kecederaan berlaku.

petua hilangkan bengkak

8. Jangan sapu minyak panas atau minyak gamat

Sama seperti tuaman haba, menyapu minyak panas dan minyak gamat akan menyebabkan salur darah mengembang lantas mempercepatkan dan mempertingkatkan proses keradangan. Sapuan minyak hanya dibenarkan selepas 48-72 jam kecederaan berlaku.

9. Jangan abaikan kesakitan

Jika kesakitan dan bengkak yang dialami terlalu kuat, itu tanda-tanda kecederaan yang anda alami agak parah. Jumpalah doktor, terutamanya jika ada kebas-kebas jari, sendi terkehel keluar, kelumpuhan, dan luka.

10. Perlu berehat

Rehat yang dimaksudkan ialah mengurangkan gerakan sendi yang bengkak dan tidak menggunakan kaki yang tercedera untuk berjalan. Gunakanlah tongkat ketiak(axillary crutches), tongkat lengan(elbow crutches) atau kerusi roda untuk bergerak.

11. Tuam ais

Sejurus selepas  bengkak, lakukan tuaman ais. Tuaman ais selama 20 minit setiap 2-3 jam dapat mengurangkan kesakitan dan mengelakkan bengkak yang teruk. Rejim tuaman ais ini disarankan dibuat sehingga 48-72 selepas kecederaan.

12. Balut dengan bandage

Balutan ini untuk beri tekanan dan mengurangkan pergerakan pada sendi yang bengkak. Ini dapat menghalang bengkak besar daripada terjadi. Namun, pastikan tidak balut terlampau ketat sehingga bekalan darah tersekat.

petua hilangkan bengkak

13. Tinggikan anggota badan yang bengkak

Anggota yang bengkak perlu diletakkan tinggi. Sewaktu duduk pastikan kaki bengkak sentiasa melunjur. Jangan biar tergantung di bawah. Sewaktu baring atau tidur, kaki bengkak hendaklah lebih tinggi daripada badan. Boleh alas bantal di bawah kaki.

Jika rawatan di rumah tidak mengurangkan bengkak dan kesakitan, itu tandanya anda kena berjumpa doktor. Dikhuatiri ada kecederaan yang serius atau penyakit lain. Semoga bermanfaat!

Sumber: Bidadari.My

Comments

Start using Git version control on the command line

If you want to start using Git version control and GitLab, make sure that you have created and/or signed into an account on GitLab.

Open a shell 

Depending on your operating system, you will need to use a shell of your preference. Here are some suggestions:

Check if Git has already been installed 

Git is usually preinstalled on Mac and Linux.

Type the following command and then press enter:

git --version

You should receive a message that tells you which Git version you have on your computer. If you don’t receive a “Git version” message, it means that you need to download Git.

If Git doesn’t automatically download, there’s an option on the website to download manually. Then follow the steps on the installation window.

After you are finished installing Git, open a new shell and type git --version again to verify that it was correctly installed.

Add your Git username and set your email 

It is important to configure your Git username and email address, since every Git commit will use this information to identify you as the author.

On your shell, type the following command to add your username:

git config --global user.name "YOUR_USERNAME"

Then verify that you have the correct username:

git config --global user.name

To set your email address, type the following command:

git config --global user.email "your_email_address@example.com"

To verify that you entered your email correctly, type:

git config --global user.email

You’ll need to do this only once, since you are using the --global option. It tells Git to always use this information for anything you do on that system. If you want to override this with a different username or email address for specific projects, you can run the command without the --global option when you’re in that project.

Check your information 

To view the information that you entered, along with other global options, type:

git config --global --list

Basic Git commands 

Go to the master branch to pull the latest changes from there 

git checkout master

Download the latest changes in the project 

This is for you to work on an up-to-date copy (it is important to do this every time you start working on a project), while you set up tracking branches. You pull from remote repositories to get all the changes made by users since the last time you cloned or pulled the project. Later, you can push your local commits to the remote repositories.

git pull REMOTE NAME-OF-BRANCH

When you first clone a repository, REMOTE is typically “origin”. This is where the repository came from, and it indicates the SSH or HTTPS URL of the repository on the remote server. NAME-OF-BRANCH is usually “master”, but it may be any existing branch.

View your remote repositories 

To view your remote repositories, type:

git remote -v

Create a branch 

To create a branch, type the following (spaces won’t be recognized in the branch name, so you will need to use a hyphen or underscore):

git checkout -b NAME-OF-BRANCH

Work on an existing branch 

To switch to an existing branch, so you can work on it:

git checkout NAME-OF-BRANCH

View the changes you’ve made 

It’s important to be aware of what’s happening and the status of your changes. When you add, change, or delete files/folders, Git knows about it. To check the status of your changes:

git status

View differences 

To view the differences between your local, unstaged changes and the repository versions that you cloned or pulled, type:

git diff

Add and commit local changes 

You’ll see your local changes in red when you type git status. These changes may be new, modified, or deleted files/folders. Use git add to stage a local file/folder for committing. Then use git commit to commit the staged files:

git add FILE OR FOLDER
git commit -m "COMMENT TO DESCRIBE THE INTENTION OF THE COMMIT"

Add all changes to commit 

To add and commit all local changes in one command:

git add .
git commit -m "COMMENT TO DESCRIBE THE INTENTION OF THE COMMIT"

Note: The . character typically means all in Git.

Send changes to gitlab.com 

To push all local commits to the remote repository:

git push REMOTE NAME-OF-BRANCH

For example, to push your local commits to the master branch of the origin remote:

git push origin master

Delete all changes in the Git repository 

To delete all local changes in the repository that have not been added to the staging area, and leave unstaged files/folders, type:

git checkout .

Delete all untracked changes in the Git repository 

git clean -f

Unstage all changes that have been added to the staging area 

To undo the most recent add, but not committed, files/folders:

git reset .

Undo most recent commit 

To undo the most recent commit, type:

git reset HEAD~1

This leaves the files and folders unstaged in your local repository.Warning: A Git commit is mostly irreversible, particularly if you already pushed it to the remote repository. Although you can undo a commit, the best option is to avoid the situation altogether.

Merge created branch with master branch 

You need to be in the created branch.

git checkout NAME-OF-BRANCH
git merge master

Merge master branch with created branch 

You need to be in the master branch.

git checkout master
git merge NAME-OF-BRANCH

Sumber: Gitlab.Com

Comments

Cara Cepat Rawatan Menurunkan Kolesterol Tinggi

Apakah Itu Kolesterol ?

Sebelum kita hendak mengambil rawatan menurunkan kolesterol tinggi, lebih baik terlebih dahulu kita ketahui serba sedikit tentang apa itu kolesterol. Kolesterol pada asasnya merupakan sejenis zat lemak yang dinamakan lipid yang diproduksi oleh hati. Sebenarnya, kolesterol tidaklah membahayakan dan akan sangat bermanfaat bagi tubuh kita jika kadarnya tidak terlalu berlebihan. Kolesterol sangat berguna untuk membantu proses pembentukan hormon dan Vitamin D. Bahkan, kolesterol juga akan membantu proses penyerapan nutrisi makanan di dalam tubuh kita. Namun begitu kolesterol akan menjadi membahaya bagi kesihatan ketika kadarnya di dalam tubuh kita berlebihan.Kolesterol akan mengalir di sepanjang darah kita dengan keadaan terbungkus oleh protein. Oleh kerana dibungkus oleh protein, maka kombinasi antara kolesterol dan protein ini biasa dinamakan dengan lipoprotein. Secara umumnya ada 2 jenis lipoprotein pada aliran darah kita, iaitu lipoprotein berkepekatan rendah (LDL) dan juga lipoprotein berkepadatan tinggi (HDL)

Apakah Itu LDL dan HDL?

Bila kita bicara tentang kolesterol, maka sangat penting untuk mengetahui apa itu LDL dan HDL. Secara asasnya, kadar 2 jenis lipoprotein inilah yang menjadi faktor penentu apakah kolesterol akan memberi impak buruk bagi tubuh kita atau tidak.

LDL

Biasanya, LDL juga dikenali sebagai kolesterol jahat. Mengapa itu? Ini kerana jenis ini lipoprotein akan membawa kolesterol ke arteri arteri kita. Ini akan menyebabkan kolesterol berkumpul di dinding saluran darah sehingga plak akhirnya terbentuk. Hasilnya, kadar aliran darah menjadi tersumbat dan timbul pelbagai penyakit berbahaya di dalam badan kita.

HDL

Bertentangan dengan LDL, HDL biasanya dipanggil kolesterol baik. Ini kerana lipoprotein jenis ini akan membawa kolesterol kembali dari arteri ke hati. Kolesterol akan dikeluarkan dari badan kita oleh hati.

Penyakit Jika Kadar Kolesterol Berlebihan

Dari penjelasan di atas, sudah tentu anda sudah tahu bahawa kolesterol tidak selalu mempunyai kesan buruk pada tubuh kita. Apa yang membuat kolesterol berbahaya adalah apabila LDL atau kolesterol buruk dalam badan kita berlebihan. Apabila ini berlaku, ada beberapa penyakit yang kemungkinan besar akan menimpa kita:

Penyakit Jantung Koronari

Penyakit ini boleh berlaku disebabkan pembentukan kolesterol dalam saluran darah kita. Kolesterol yang terkumpul akan menyebabkan plak, yang akan menghalang peredaran aliran darah ke hati kita. Jika peredaran darah ke jantung disekat, maka jantung tidak dapat berfungsi dengan baik dan ini adalah sumber berlakunya serangan jantung.

Stroke

Seperti yang kita ketahui, otak kita memerlukan bekalan nutrien dan oksigen yang mencukupi dari darah untuk berfungsi secara optimum. Apabila peredaran aliran darah ke otak tersumbat kerana plak yang terbentuk di dalam saluran darah, tentu otak akan kekurangan oksigen dan nutrien. Jika ini berlaku, maka sel-sel di dalam otak perlahan-lahan mati dan menyebabkan stroke, bahkan boleh mendatangkan kematian.

Angina Pektoris

Angina pektoris merupakan kesakitan yang dialami pada bahagian dada seseorang. Ia disebabkan oleh kekurangan pengaliran darah ke jantung dan disifatkan sebagai penyakit sementara. Jika pengaliran darah yang membawa oksigen dan nutrien ke jantung terjejas ini akan menyebabkan penyakit angina pektoris. Otot jantung memerlukan bekalan oksigen yang lebih pada waktu-waktu tertentu seperti semasa melakukan senaman ataupun ketika seseorang itu berada dalam keadaaan tertekan. Faktor lain yang boleh menjadi penyebab kepada penyakit angina pektoris ialah berkaitan dengan kardiovaskular.

Faktor Penyebab Meningkatnya Kadar Kolesterol

Selepas anda mengetahui pelbagai penyakit berbahaya yang boleh disebabkan oleh paras kolesterol yang terlalu tinggi, maka sudah tentu anda tidak mahu tahap kolesterol anda meningkat, bukan?

Untuk memastikan paras kolesterol anda tidak meningkat, maka sudah tentu anda perlu tahu terlebih dahulu faktor-faktor yang menyebabkan peningkatan kadar kolesterol dalam badan.

Gaya Hidup Yang Tidak Sihat

Ia tidak boleh dinafikan gaya hidup yang tidak sihat merupakan faktor utama bagaimana kadar kolesterol dalam badan dapat meningkat secara dramatik. Tabiat seperti merokok, kemalasan untuk bersenam, dan minuman beralkohol telah terbukti dapat mengurangkan tahap HDL dan sebenarnya akan meningkatkan tahap LDL dalam darah.

Di samping itu, rokok dan minuman beralkohol juga akan merosakkan dinding saluran darah dan mempercepat proses pembentukan plak pada saluran darah. Jika demikian, peredaran darah ke organ penting seperti jantung dan otak akan terjejas.

Mengamalkan Makanan Lemak Tinggi

Jika anda seorang peminat makanan yang mempunyai kandungan lemak tepu yang tinggi seperti daging merah terutamanya, maka anda harus mengurangkan penggunaannya dari sekarang. Lemak tepu adalah punca utama menghasilkan kolesterol jahat atau LDL dalam badan. Sekiranya tahap LDL meningkat, saluran darah akan diisi dengan plak dan peredaran darah akan terganggu.

Mempunyai Sejarah Diabetes

Orang yang mempunyai sejarah diabetes biasanya akan mempunyai tahap kolesterol tinggi secara automatik. Malah, pesakit kencing manis mempunyai peluang untuk mengalami serangan jantung dan juga berisiko 5 kali lebih tinggi daripada orang biasa.

Apabila seseorang menghidap diabetes, tahap glukosa dalam badan menjadi tidak terkawal. Tahap glukosa yang berlebihan akan mencetuskan pembentukan plak di dalam saluran darah, yang tentu akan menghalang peredaran darah ke jantung dan juga ke otak.

Obesiti

Orang yang berlebihan berat badan atau gemuk akan sangat berisiko kerana mempunyai paras kolesterol yang tinggi dalam badan mereka. Ini kerana orang yang berlebihan berat badan mempunyai tahap LDL yang tinggi, manakala tahap HDL sangat rendah.

Seperti yang sudah kita ketahui, tahap LDL yang terlalu tinggi akan menyebabkan kolesterol berkumpul di dalam saluran darah. Jika demikian, plak akan membentuk dan menghalang peredaran darah. Akibatnya, risiko serangan jantung akan lebih tinggi. Oleh itu, anda perlu melakukan cara untuk menurunkan berat badan supaya paras kolesterol yang buruk dapat dikurangkan.

Faktor Genetik

Di samping perkara-perkara yang disebutkan di atas, terdapat juga keadaan di mana kadar kolesterol dalam tubuh kita tinggi semasa kita dilahirkan. Keadaan ini, yang biasanya dipanggil hiperkolesterolemia keluarga, boleh berlaku kerana kita mempunyai ibu bapa atau saudara-mara yang mempunyai sejarah kolesterol tinggi. Sekarang, orang yang menderita hypercholesterolaemia keluarga sangat berisiko untuk menghidap penyakit jantung pada usia muda.

Bagaimana Untuk Mendiagnosis Tahap Kolesterol Dalam Badan?

Mengetahui tahap kolesterol dalam setiap badan adalah sangat penting agar kita mengambil langkah-langkah yang perlu dilakukan nanti. Terdapat beberapa tanda kolesterol tinggi yang boleh kita ketahui lebih awal. Tetapi satu-satunya cara untuk mengetahui tahap kolesterol pasti adalah untuk melawat doktor dan melakukan ujian darah.

Apabila melakukan ujian darah, tahap kolesterol akan diukur dengan menggunakan unit miligram per desiliter (mg / dL). Apabila anda menerima keputusan ujian kolesterol, anda akan dapat melihat keputusan dari:

Jumlah Kolesterol: Keputusan yang diperoleh adalah kombinasi LDL, HDL, dan trigliserida 20% dalam darah.

Trigliserida: Trigliserida adalah lemak yang terdapat di dalam darah. Biasanya, paras trigliserida tidak boleh melebihi 150 mg / dL.

HDL: Semakin banyak HDL yang anda dapat, lebih baik. Bagi lelaki, anda sekurang-kurangnya mempunyai 55 mg / dL HDL dan untuk wanita, anda sekurang-kurangnya mempunyai 45 mg / dL HDL.

LDL: Berbeza dengan HDL, lebih kecil jumlah LDL yang anda dapatkan, lebih baik. Sekiranya anda tidak mempunyai sejarah penyakit jantung, jumlah LDL anda tidak boleh melebihi 130 mg / dL. Bagi anda yang sudah mempunyai sejarah penyakit jantung, tahap LDL yang anda boleh tidak melebihi 100 mg / dL.

Bagaimana Untuk Menurunkan Kolesterol Melalui Makanan

Cara paling mudah untuk mengurangkan kolesterol jahat adalah dengan memperhatikan diet anda. Makanan apa yang sangat berguna untuk menurunkan tahap kolesterol dalam tubuh kita? Berikut ialah senarai:

1. Oatmeal

Satu makanan yang sangat sesuai untuk dimakan saat sarapan pagi dan akan sangat membantu mengurangkan kadar kolesterol dalam darah. Ini kerana oat mengandungi sebatian beta-glucan yang akan menyerap LDL dan mengeluarkannya dari badan.

Malah, pakar percaya bahawa memakan oat secara berkala selama 6 minggu akan mengurangkan tahap LDL dalam darah sebanyak 5.3%. Oleh itu, segera gantikan sarapan anda dengan oatmeal jika anda ingin mengurangkan tahap kolesterol.

2. Ikan Salmon

Kenapa salmon sangat bermanfaat untuk menurunkan tahap kolesterol? Sebabnya mudah, salmon mempunyai kandungan omega-3 yang sangat tinggi. Omega-3 ini akan sangat berguna untuk meningkatkan tahap HDL dalam darah. Akibatnya, tahap kolesterol dalam tubuh akan berkurang.Menurut satu kajian yang dilakukan oleh Loma Linda University, memakan makanan yang kaya omega-3 akan meningkatkan tahap HDL sebanyak 4%. Di samping itu, salmon juga merupakan makanan yang sesuai untuk menggantikan daging merah yang mengandungi banyak lemak tepu.

3. Kacang Almond (Badam)

Jika anda mencari makanan ringan yang sangat berguna untuk menurunkan tahap kolesterol, maka badam adalah pilihan yang tepat. Terdapat sekurang-kurangnya 2 alasan mengapa badam sangat berguna untuk mengurangkan tahap kolesterol.

Pertama, badam mengandungi asid tak tepu yang meningkatkan tahap kolesterol baik atau HDL dalam badan kita. Kedua, asid tak tepu daripada badam akan mencetuskan kolesterol jahat atau LDL untuk mengoksida. Jika LDL dioksidakan dengan cepat, maka pembentukan plak pada saluran darah dapat dielakkan.

Sesetengah kajian juga menyimpulkan bahawa dengan mengambil setengah mangkuk badam, tahap kolesterol dalam badan akan dikurangkan sebanyak 10%. Walau bagaimanapun, perlu diingat bahawa badam ini mengandungi kalori yang cukup tinggi. Jadi anda perlu menghadkan penggunaannya jika anda tidak mahu menjadi gemuk.

4. Kacang Walnut

Sebagai tambahan kepada badam, walnut juga merupakan sejenis kacang yang akan sangat berguna untuk menurunkan tahap kolesterol. Menurut kajian yang telah diterbitkan dalam jurnal Diabetes Care, mengamalkan pemakanan walnut secara berkala akan mengurangkan tahap kolesterol dalam darah sehingga 10%. Ini kerana walnut mempunyai keupayaan untuk meningkatkan tahap HDL dalam darah, jadi sudah tentu tahap kolesterol lebih banyak diturunkan.

5. Teh Hijau

Siapa yang tidak tahu teh hijau? Minuman ini juga sangat berguna untuk menurunkan kolesterol. Ini kerana teh hijau mengandungi sebatian yang berfungsi sebagai antioksidan seperti polifenol dan riboflavin. Antioksidan dalam teh hijau dipercayai menghalang peningkatan tahap LDL dalam badan.

Malah menurut kajian yang dilakukan di Jepun, teh hijau dapat mengurangkan kadar kolesterol darah hingga 5%. Di samping itu, minuman ini juga mempunyai kalori yang sangat rendah.

6. Limau

Buah limau terkenal dengan kandungan Vitamin C yang akan berguna sebagai cara untuk memulihkan wajah secara semula jadi dan sebagai cara untuk menyingkirkan zits dengan cepat. Walau bagaimanapun, buah ini juga mempunyai keupayaan yang sangat berkesan untuk mengurangkan tahap kolesterol.

Buah limau mengandungi sebatian yang dipanggil pektin. Pektin adalah satu jenis serat yang akan berguna untuk mengurangkan tahap LDL dalam darah. Buah limau juga mengandungi sebatian yang dipanggil phytosterol. Menurut beberapa hasil kajian, bekalan 2 gram phytosterol ke dalam badan setiap hari akan sangat berguna untuk mengurangkan tahap LDL dalam darah sebanyak 8%.

7. Tomato

Tidak ada keraguan bahawa tomato mempunyai banyak manfaat untuk badan kita. Ternyata, tomato juga sangat berguna untuk menurunkan kadar kolesterol kerana tomato mengandungi lycopene. Lycopene adalah pigmen yang akan memberikan warna merah ke permukaan kulit tomato.

Menurut satu kajian yang telah diterbitkan dalam British Journal of Nutrition, lycopene dalam tomato akan sangat berguna untuk mengurangkan kadar kolesterol darah sehingga 17%. Ini kerana lycopene boleh meningkatan tahap HDL dalam badan.

8. Jambu

Selain buah limau, jenis buah-buahan yang juga sangat berkesan untuk menurunkan kadar kolesterol dalam darah dengan cepat adalah jambu. Sama seperti tomato, jambu mempunyai kandungan lycopene yang sangat tinggi. Sebenarnya, jambu adalah jenis makanan dengan kandungan lycopene tertinggi, melebihi kandungan lycopene dalam tomato.Oleh itu, jangan terkejut jika memakan jambu batu, tahap kolesterol dalam darah boleh dikurangkan dengan cepat. Di samping itu, jambu mempunyai kalori yang sangat rendah, jadi ia sesuai untuk menyokong diet anda.

9. Anggur Merah

Anggur merah adalah buah yang cukup mudah dicari. Adakah anda tahu bahawa buah ini boleh mengurangkan tahap kolesterol dengan cepat? Satu kajian yang dilakukan oleh Universidad Complutense de Madrid menyimpulkan bahawa dengan meminum jus anggur merah secara tetap, tahap LDL dalam darah akan dikurangkan sebanyak 9%.Selain itu, masih dalam kajian yang sama, pesakit yang mempunyai kolesterol tinggi ternyata telah menurunkan tahap LDL sehingga 12% selepas meminum jus anggur merah.

10. Bawang Putih

Sekiranya anda ingin menghalang kesan buruk kolesterol, maka anda boleh menambah bawang putih semasa memasak makanan. Bawang putih mempunyai banyak sebatian yang akan sangat berguna untuk mencegah plak daripada menyebabkan pembentukan kolesterol dalam saluran darah. Jika plak tidak terbentuk, tentu saja anda akan mengelakkan komplikasi daripada penyakit yang disebabkan oleh kolesterol tinggi.Satu kajian yang diterbitkan dalam Annals of Internal Medicine menyimpulkan bahawa ternyata, bawang putih dapat mengurangkan kadar kolesterol sebanyak 9%. Untuk mendapatkan manfaat maksimum dari bawang putih, anda perlu mengambil 2 ulas bawang putih setiap hari.

11. Sayur Bayam

Sama seperti bawang putih, bayam akan sangat berguna untuk melindungi tubuh kita daripada bahaya yang akan disebabkan oleh paras kolesterol yang berlebihan. Ini kerana bayam mempunyai sebatian yang dipanggil lutein yang akan menghalang pembentukan plak pada dinding aliran darah. Akibatnya, tentu saja komplikasi penyakit yang disebabkan oleh kolesterol yang berlebihan dapat dicegah.Pelbagai kajian telah membuat kesimpulan bahawa dengan mengambil makanan lutein secara berkala, anda akan berisiko rendah untuk mendapat penyakit jantung pada masa akan datang.

12. Kacang Kedelai

Semua makanan yang berasaskan soya seperti tauhu atau susu kedelai juga sangat berguna untuk menurunkan tahap kolesterol. Kedelai mengandungi asid lemak omega-3, protein, dan juga serat yang akan membantu mengurangkan tahap LDL dalam saluran darah.Berdasarkan artikel yang dilaporkan oleh WebMD, soya dapat mengurangkan kadar LDL sebanyak 3%. Walaupun jumlah pengurangan tidak penting, tetapi kacang soya masih dapat membantu mengurangkan kadar kolesterol. Selain itu, terdapat banyak makanan berasaskan soya yang dapat boleh ditemui dengan mudah dalam kehidupan seharian.

13. Alpukat

Satu lagi jenis buah yang berguna untuk menurunkan kolesterol adalah alpukat. Alpukat mengandungi lemak tak tepu yang akan meningkatkan tahap HDL semasa mengurangkan tahap LDL. Alpukat juga mengandungi sebatian yang dipanggil beta-sitosterol. Sebatian ini akan sangat berguna untuk menekan jumlah kolesterol yang diserap melalui makanan.Tetapi harus diingat bahawa alpukat adalah buah-buahan dengan kandungan kalori yang tinggi. Oleh itu, ambil buah ini dengan jumlah yang munasabah supaya anda tidak terkena obesiti.

14. Minyak Zaitun

Adakah anda tahu bahawa minyak zaitun dapat mengurangkan kadar kolesterol? Minyak zaitun kaya dengan antioksidan dan juga lemak tak tepu yang akan mengurangkan tahap LDL sambil meningkatkan tahap HDL. Minyak zaitun mengandungi sebatian yang dipanggil fenolik. Kompaun ini akan menghalang proses pembentukan plak dalam saluran darah akibat pembentukan kolesterol.Untuk mendapatkan manfaat maksimum dari minyak zaitun, anda disyorkan untuk menambahkan 2 sudu minyak zaitun kepada makanan yang anda makan setiap hari.

15. Coklat

Berita baik untuk anda pencinta coklat. Selain rasa ketagihan, coklat juga sangat berguna untuk menurunkan kolesterol.Coklat mengandungi sebatian yang dipanggil phytosterol. Menurut kajian yang diterbitkan dalam American Journal of Nutrition Clinical, sebatian phytosterol dapat mengurangkan kadar LDL dalam darah hingga 16%. Coklat mengandungi antioksidan dan juga lemak tak tepu yang juga berguna untuk meningkatkan tahap HDL dalam badan.

16. Buah Berry

Semua jenis beri, sama ada strawberi, beri hitam, atau blueberry, kedua-duanya tinggi antioksidan. Kandungan antioksidan dalam beri akan sangat berguna untuk menurunkan tahap LDL dalam saluran darah.Di samping itu, pakar kesihatan juga menyimpulkan bahawa buah beri juga sangat berguna untuk menyokong prestasi hati. Sekiranya organ-organ penting seperti jantung dapat berfungsi secara optimum, maka sudah tentu lebih banyak kolesterol jahat dapat dikeluarkan dari tubuh.

17. Epal

Epal juga adalah buah yang sangat mudah dicari. Bagi anda yang ingin menurunkan tahap kolesterol dengan cepat, maka memakan epal adalah salah satu pilihan yang paling mudah. Epal mempunyai kandungan polifenol yang sangat tinggi. Seperti yang kita ketahui, polyphenols adalah antioksidan yang boleh mencegah pembentukan plak dalam saluran darah akibat pembentukan kolesterol.Petua untuk mendapatkan manfaat maksimum apabila memakan epal: makan epal sekali dengan kulitnya. Ini kerana kandungan polifenol dalam epal ditemui pada kulit epal tersebut.

18. Flaxseed

Flaxseed adalah satu jenis bijirin yang juga berguna untuk menurunkan kolesterol. Dari namanya, dapat diketahui bahawa flaxseed adalah benih dari bunga flax. Flaxseed sangat berguna untuk menurunkan tahap kolesterol.Flaxseed mempunyai kandungan asid lemak omega-3 yang sangat tinggi. Seperti yang telah kita ketahui, omega-3 sangat berguna untuk meningkatkan tahap HDL dalam darah. Flaxseed juga mempunyai serat yang cukup tinggi, jadi ia boleh menghalang penyerapan kolesterol yang berlebihan oleh badan.Untuk dapat menikmati flaxseed, maka hanya tambahkan flaxseed dengan makanan yang anda makan seperti bijirin, oatmeal, atau yogurt.

19. Sayur Broccoli

Seperti sayur-sayuran secara umum, sayur broccoli tentu saja akan memberikan pelbagai manfaat untuk kesihatan tubuh kita. Khususnya, sayur broccoli ternyata mempunyai pelbagai jenis sebatian yang berguna untuk menurunkan kolesterol.Phytosterol, yang sangat berguna untuk mencegah penyerapan kolesterol yang berlebihan dalam usus kecil. Omega-3 asid lemak, yang sangat berguna untuk meningkatkan tahap HDL semasa mengurangkan tahap LDL dalam darah. Serta antioksidan dan Vitamin C, yang akan menghalang peningkatan paras LDL dalam darah.

20. Minyak Ikan

Biasanya minyak ikan sememangnya digunakan sebagai penambah selera makan kanak-kanak, tetapi ternyata minyak ikan juga mampu mengurangkan kadar kolesterol dalam darah dengan cepat. Sebabnya mudah, ini kerana minyak ikan mengandungi omega-3 yang sangat tinggi.Seperti yang dijelaskan di atas, omega-3 akan sangat berguna untuk meningkatkan tahap HDL sambil mengurangkan tahap LDL dalam darah. Jika itu berlaku, tentu saja kolesterol dalam badan akan berkurangan.

Bagaimana Untuk Mengurangkan Tahap Kolesterol Melalui Gaya Hidup

Selain daripada pola pemakanan, penurunan kolesterol juga boleh dilakukan dengan mengubah gaya hidup harian kita. Menurunkan tahap kolesterol dalam badan melalui gaya hidup sebenar tidak sukar, tetapi sudah tentu anda mesti mempunyai azam yang kuat dan juga konsisten yang tinggi untuk mendapatkan hasil yang maksimum.

Berikut adalah jenis gaya hidup yang dapat mengurangkan kadar kolesterol.

1. Bersenam

Ia tidak boleh dinafikan lagi jika senaman adalah satu aktiviti yang perlu anda lakukan jika anda ingin mengurangkan kolesterol dengan cepat. Banyak hasil penyelidikan telah menyimpulkan bahawa senaman, terutama senaman aerobik seperti berenang, berlari, dan berbasikal dapat meningkatkan kadar HDL dalam darah.

Untuk mengurangkan kolesterol, anda tidak perlu bersenam terlalu keras. Bersenam selama 30 minit sehari secara teratur sangat membantu menurunkan tahap kolesterol. Cuba pelbagai senaman supaya anda tidak merasa bosan dengan cepat.

2. Berhenti Merokok

Semua orang pasti tahu bahawa tabiat merokok akan membawa banyak masalah untuk kesihatan pada masa akan datang. Terdapat banyak bahaya dan kesan buruk merokok kepada tubuh manusia.Sekiranya anda mempunyai tabiat merokok, maka anda harus berhenti dengan segera kerana ternyata merokok juga akan menyebabkan seseorang mengalami kolesterol tinggi. Ini kerana merokok boleh merosakkan saluran darah dan juga mempercepat pembentukan plak oleh kolesterol dalam saluran darah.Sekiranya terdapat pembentukan plak di dalam saluran darah, maka peredaran darah ke jantung akan terganggu dan ini akan menjadikan jantung tidak berfungsi dengan baik. Keadaan itu akan membawa kepada penyakit jantung.

3. Beralih Menjadi Vegetarian

Paras LDL dalam darah biasanya meningkat kerana lemak tepu yang terdapat pada daging yang diproses, maka sudah tentu anda harus mengurangkan pengambilan daging merah. Sekiranya anda sudah mempunyai paras kolesterol yang tinggi, maka adalah idea yang baik untuk beralih kepada vegetarian dan mengambil banyak sayur-sayuran dan buah-buahan yang disebutkan di atas.Satu kajian yang dilakukan oleh Resnicow dan rakan-rakan telah menunjukkan bahawa menjadi vegetarian akan sangat bermanfaat untuk menurunkan tahap kolesterol dan juga trigliserida dalam saluran darah.

4. Hindari Stress

Adakah anda tahu bahawa tekanan boleh menyebabkan paras kolesterol darah melambung? Ya, banyak hasil penyelidikan menyimpulkan bahawa tekanan menyumbang sangat kepada peningkatan kadar kolesterol. Satu kajian yang diterbitkan dalam Jurnal Penyakit Kronik menyimpulkan bahawa pelajar mengalami tahap kolesterol yang tinggi dalam tempoh ujian berbanding hari biasa.Di samping itu, terdapat juga kajian yang dijalankan oleh P.Tertlake dan rakan-rakannya yang menyimpulkan bahawa tekanan boleh meningkatkan tahap kolesterol darah sehingga 10%.Oleh itu, sebanyak mungkin menghindari tekanan yang berlebihan. Apabila anda mengalami tekanan, rehatkan minda anda seketika dan lakukan perkara-perkara yang anda suka dan bermeditasi. Di samping itu, bersenam juga sangat berguna untuk menangkis tekanan.

5. Tidur Dalam Waktu Yang Cukup

Perkara-perkara remeh seperti memberi perhatian kepada masa tidur juga ternyata sangat berguna untuk menurunkan kadar kolesterol. Seperti yang dilaporkan oleh Healthline, masa tidur yang terlalu pendek atau terlalu lama akan meningkatkan pengeluaran trigliserida dan juga akan mengurangkan pengeluaran HDL dalam darah.Satu kajian yang diterbitkan dalam Journal of Cardiovascular Nursing menyimpulkan bahawa tidur kurang daripada enam jam akan meningkatkan risiko penyakit jantung seseorang.Oleh itu, kurangkan kebiasaan berjaga hingga larut malam. Dengan masa tidur yang cukup (sekurang-kurangnya 7 jam sehari), tahap kolesterol dalam darah akan dikekalkan dan dapat mengelakkan pelbagai jenis penyakit berbahaya di masa akan datang.

Cara Menurunkan Kadar Kolesterol Melalui Pengubatan

Memperbaiki diet dan gaya hidup sememangnya merupakan cara yang paling disyorkan untuk mengurangkan tahap kolesterol anda. Walau bagaimanapun, terdapat beberapa kes di mana diet dan gaya hidup yang baik tidak mencukupi untuk mengurangkan tahap kolesterol. Sekiranya perkara ini berlaku, maka rawatan adalah langkah yang boleh diambil untuk menurunkan tahap kolesterol tersebut.

Namun begitu, sekiranya anda ingin mengurangkan tahap kolesterol melalui ubat-ubatan, maka anda harus berunding dengan doktor yang anda dipercayai. Pastikan ubat yang anda gunakan diluluskan oleh doktor dan Kementerian Kesihatan Malaysia. Apakah ubat-ubatan yang sangat berkesan untuk menurunkan kolesterol?

1. Suplemen Niacin

>Suplemen niacin adalah ubat-ubatan yang anda boleh dapatkan di farmasi dengan mudah. Suplemen niasin akan sangat berguna untuk menurunkan kolesterol kerana suplemen ini dapat meningkatkan pengeluaran HDL atau kolesterol baik dalam darah.

Lebih banyak HDL dalam badan, semakin banyak kolesterol yang dapat anda sembuh. Malah, satu kajian yang diterbitkan dalam American Heart Association Journal telah menyimpulkan bahawa suplemen niacin dapat meningkatkan pengeluaran HDL dalam darah sehingga 20%.

2. Aspirin

>Aspirin sememangnya merupakan ubat yang biasanya digunakan untuk merawat sakit kepala. Tetapi apabila anda mempunyai kolesterol tinggi, doktor anda boleh mengesyorkan menggunakan aspirin dengan dos kecil. Ini adalah kerana aspirin mempunyai keupayaan untuk mencegah pembekuan darah. Sekiranya darah tidak membekukan, risiko penyakit jantung koronari dapat dikurangkan.

3. Statin

Statin adalah ubat yang agak popular untuk mengurangkan tahap kolesterol dalam darah dengan cepat. Ini kerana ubat jenis dadah ini dapat menyekat prestasi enzim di hati yang bertanggungjawab untuk menghasilkan kolesterol. Jika ini berlaku, pengeluaran kolesterol akan menurun dan mengurangkan jumlah kolesterol dalam tubuh.Biasanya, doktor hanya akan mengesyorkan menggunakan statin kepada pesakit yang berisiko tinggi untuk penyakit jantung. Kesan sampingan statin yang biasa adalah sakit kepala dan gangguan pencernaan.

4. Ezitimibe

Ezitimibe adalah ubat yang juga biasanya disarankan oleh doktor kepada pesakit yang mempunyai kolesterol tinggi. Jadi, usus kecil dalam badan anda bertanggungjawab untuk menyerap kolesterol yang dihasilkan oleh hati. Setelah diserap, kolesterol ini akan disalurkan ke dalam saluran darah.Sekiranya terlalu banyak kolestrol diserap oleh usus kecil, maka sudah tentu terdapat pembentukan kolesterol dalam saluran darah. Di sinilah ubat ezitimibe berperanan. Ubat ini akan mengurangkan proses penyerapan kolesterol oleh usus kecil. Hasilnya jumlah kolesterol dalam saluran darah akan berkurang.Ubat ini biasanya akan ditetapkan oleh doktor kerana ubat ini tidak mempunyai kesan sampingan yang teruk seperti statin. Sebelum mengambil ubat ini, lebih baik terlebih dahulu membaca arahan penggunaan.

5. Alirocumab

Di samping ubat di atas, terdapat satu lagi ubat untuk mengurangkan tahap kolesterol yang dipanggil alirocumab. Ubat ini tidak dimakan, tetapi digunakan untuk tubuh kita melalui suntikan.Alirocumab akan sangat berguna untuk membantu hati menyerap lebih banyak LDL dalam badan. Kesannya, paras kolesterol yang beredar di dalam saluran darah akan menurun.Ubat ini hanya akan ditetapkan oleh doktor untuk pesakit yang mengalami kolesterol tinggi akibat faktor genetik atau mereka yang mempunyai alahan terhadap statin dan ubat penurun kolesterol lain.

Sumber: OhGitu

Comments

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