未分類

Magic methods in PHP – Part 1

When we are developing web systems using PHP, we might encounter to use magic methods in PHP a lot. Today I would like to talk about some important magic methods provided by PHP.

Actually there are lots of magic methods in PHP. For example,

  • __construct()
  • __destruct()
  • __call($fun, $arg)
  • __callStatic($fun, $arg)
  • __get($property)
  • __set($property, $value)
  • __isset($content)
  • __unset($content)
  • __sleep()
  • __wakeup()
  • __toString()
  • etc..

But we don’t use all of the things unless it’s necessary. I will only write about a few methods which are mostly used in my experience.

Construct

If you define this method in your class, it will be called automatically when an object is instantiated. The purpose of this method is to assign some default values to the properties of the object. This method is also called a constructor.

<?php
class Student {
    private $name;
 
    public function __construct($name) 
    {
        $this->name = $name;
    }
}
 
$student = new Student('yuuma');
?>

Destruct

The __destruct () method is called destructor and is called when the object is destroyed. Generally also called when script stops or exits. The purpose of this method is to provide an opportunity to save the state of the object or any other cleaning you want to do.

<?php
class Student {
    private $name;
 
    public function __construct($name) 
    {
        $this->name = $name;
    }
 
    public function __destruct() 
    {
        echo 'This will be called when the class has been closed';
        // file close, removing session etc.
    }
}
 
$student = new Student('yuuma');
?>

Set

The magic __set () method is called when you try to set data on properties of inaccessible or non-existent objects. The purpose of this method is to set additional object data for which you have not explicitly defined object properties.

<?php
class Student {
    protected $data = array();
 
    public function __set($name, $value) 
    {
        $this->data[$name] = $value;
    }
}
 
$student = new Student();
//  __set() called
$student->name = 'yuuma';

As you can see from the example above, we are trying to set the property of the name, which does not exist. And so the __set () method is called. The first argument to the __set () method is the name of the property that is being accessed, and the second argument is the value we are trying to set.

Get

In the case of the __set () method example in the previous section, we discussed how to set values for non-existent properties. The __get () method is the exact opposite. The magic __get () method is called when you try to read data from properties of inaccessible or non-existent objects. The purpose of this method is to provide values for these properties.

<?php
class Student {
    private $data = array();
 
    public function __set($name, $value) 
    {
        $this->data[$name] = $value;
    }
 
    public function __get($name) 
    {
        If (isset($this->data[$name])) {
            return $this->data[$name];
        }
    }
}
 
$student = new Student();
 
//  __set() called
$student->name = 'yuuma';   
 
//  __get() called
echo $student->name;                      
?>

I would like to write more but I think the article is a little bit long for now. So I will write a part 2 in next week relating with this week article. So see you next week.

By Yuuma



初めまして


Hello Everyone,
I am ami, which is my Japanese name. My actual name is Khin Moh Moh Naing.
I am a web developer, loves to fix bugs and passionate in learning new technologies.

I graduated from Computer University from Mandalay in Myanmar with a degree in Computer Science.
Since I graduated from university, I am continuously working as a web developer.
I have been working in the industry of technology for over 2 years with the languages PHP and Laravel.

At the end of 2020 I started to join Gigas Japan and it’s such a great pleasure to meet you all.

One of my dreams is to work in Japan and want to study modern technologies and Japanese working culture.
In the future, I am also interested in Mobile Development. Currently I am working in web related system.
I am not very well communication in Japanese language but I will keep learning Japanese and try to improve my Japanese skills.
I will be writing tech related articles every Friday.

It’s nice to meet to you again everyone. よろしくお願いいたします。

By Ami



Laravel Date Filtering

I would like to talk about the date filtering process I am using in laravel today.

If we want to select records that is created today. We can normally use raw queries or without raw queries like this.

//Raw Query
Model::where(DB::raw("DATE(created_at) = '".date('Y-m-d')."'"))->get();

//Not Raw Query
Model::where('created_at', '>=', date('Y-m-d').' 00:00:00'))->get();

In fact, we can do more neat and eloquent way in laravel like this.

Model::whereDate('created_at', '=', date('Y-m-d'))->get();

We can also use Carbon function instead of date(), result will still the same.

Model::whereDate('created_at', '=', Carbon::today()->toDateString())->get();

If you want to filter just not with full date, it’s totally fine. You can filter with day, month and year like this.

//Day
Model::whereDay('created_at', '=', date('d'))->get();
//Month
Model::whereMonth('created_at', '=', date('m'))->get();
//Year
Model::whereYear('created_at', '=', date('Y'))->get();

There is also another method called `whereBetween` if you want to filter by date range.

Model::whereBetween('created_at', [FROM_DATE, TO_DATE])->get();

By Yuuma



はじめまして

Hello Everyone, I am yuuma. I joined to Gigas Japan at the start of October 2019 and it’s such a great pleasure to meet you.

I came from Myanmar and want to study Japanese working culture and of course modern technologies. Currently I am working as a web engineer here and focusing mostly on PHP , may be later I will be working on AR, VR technologies.

As I am still not very well in writing Japanese, I will keep writing my articles in English. Please also support my articles.

Again, Nice to meet you everyone.

Yuuma



新年のご挨拶

謹んで新年のお慶びを申し上げます。旧年中は格別のお引立てを賜わり厚くお礼申し上げます。
本年もより一層尽力してまいりたいと存じておりますので、
何とぞ昨年同様のご愛顧を賜わりますよう、お願い申し上げます。

株式会社ギガスジャパン 社員一同




アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム