ilhan_ersoy Framework kullanmanın amacı işi halletmek, öğrenmek değil. O yüzden yapmanız gereken bir dili öğrenmekten de öte, genel olarak programlama ve yazılım teknolojilerini öğrenmek. Ben 2012'ye kadar framework kullanmıyordum, kendi oluşturduğum kütüphanelerim vardı onları kullanıyordum, sonra CodeIgniter, Kohana, CakePHP, Yii, FuelPHP derken Symfony ve Laravel arasında seçim yapma durumuna geldim ve Laravel'i seçtim. Seçim yapmamın sebebi o zamanlar kendi işletmem vardı ve bu işi ticari olarak yapıyordum, hızlanmam ve bir düzene geçmem gerekiyordu.
Framework'ü öğrenmek için değil de bir şeyleri hızlıca ortaya çıkarmak, ticari amaçlı vs kullanıyorsanız sıkıntı yok amacı o zaten ama açık kaynaklı bir framework'ün girip kaynak kodlarına bakmıyorsanız hata yapıyorsunuz demektir.
User::find() static bir method değil sadece static bir çağırım. find yöntemi Builder içinde normal bir yöntemdir fakat __call/__callStatic kullanıldığı için static çağırımda kullanılan yöntem isminden normal, static olmayan yönteme ulaşılmaktadır:
/**
* Dynamically handle calls into the query instance.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
if ($method === 'macro') {
$this->localMacros[$parameters[0]] = $parameters[1];
return;
}
if ($this->hasMacro($method)) {
array_unshift($parameters, $this);
return $this->localMacros[$method](...$parameters);
}
if (static::hasGlobalMacro($method)) {
$callable = static::$macros[$method];
if ($callable instanceof Closure) {
$callable = $callable->bindTo($this, static::class);
}
return $callable(...$parameters);
}
if ($this->hasNamedScope($method)) {
return $this->callNamedScope($method, $parameters);
}
if (in_array($method, $this->passthru)) {
return $this->toBase()->{$method}(...$parameters);
}
$this->forwardCallTo($this->query, $method, $parameters);
return $this;
}
/**
* Find a model by its primary key.
*
* @param mixed $id
* @param array $columns
* @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null
*/
public function find($id, $columns = ['*'])
{
if (is_array($id) || $id instanceof Arrayable) {
return $this->findMany($id, $columns);
}
return $this->whereKey($id)->first($columns);
}
Bu forumdaki arkadaşların ne büyük hatası Laravel'i büyülü bir kara kutu olarak görmesi. "Müthiş bir şey nasıl yapıyor bunu?" gibi bir düşünceye kapılıyorlar. Halbuki kaynak kodu açık, orada nasıl yaptığı kabak gibi ortada...