Bir varlığım olduğunda ve kaydetmek, onaylamak veya silmek istiyorum. Tablo yöntemini neden aramak zorundayım? Örneğin:Cakephp 3: Varlık gelen Tablo fonksiyonları Çağrı kötü ya da iyi bir fikir mi?
$articlesTable = TableRegistry::get('Articles');
$article = $articlesTable->get(12);
$article->title = 'CakePHP is THE best PHP framework!';
$articlesTable->save($article);
Neden böyle bir sorunu yok:
$article->save();
veya $article->delete();
O uygulamak çok basit:
benim Madde Varlık ben bunu gibi işlemler yapabilir:
namespace App\Model\Entity;
use Cake\ORM\Entity;
class Article extends Entity
{
public function save()
{
$table = TableRegistry::get($this->source());
$table->save($this);
}
}
Çalışıyor, ancak kötü bir uygulama veya iyi bir fikir olup olmadığını bilmek istiyorum. peşin :)
Bu yaklaşım hakkında daha fazla bilgi edinmek istiyorum. Bunu CakePHP'deki Table vs. Entity sınıfları için daha önce düşünmemiştim ve bu niyetini resmi belgelerden almadım. Okumak için tavsiye edeceğiniz bu konu hakkında daha derin bir tartışma var mı? Setler ve bireyler açısından ayrımı düşünüyorum. Dolayısıyla, varlık kümeleriyle ilgilenen yöntemler, Tablo sınıfına girer ve yalnızca tek varlıklarla ilgilenen yöntemler Entity sınıfına gider. Ama görüyorum ki bu, bazı önemsiz kod organizasyonlarından çok daha fazlasını gerçekleştirmiyor. – Ethan
Öğe belirleyicilerine yapılan çağrılar **, tablo nesnesine delege alamaz ve alma gerçekleştirmez. Varlıklar, düz dilsiz veri nesneleridir. RDBMS'de tek bir satır veya belgeye dayalı bir Depolamadaki bir belgeyi temsil ederler. Buradaki nokta sadece kod organizasyonu değil, * ayrıştırma *. Amaç modülerlik ve bu kolay bakım ve tekrar kullanılabilirliktir. 10 tuğladan yeni bir şey inşa edebilirsiniz, yapıştırırsanız veya birbirine yapıştırırsanız, yapamazsınız, birleştiler ve sıkışmışlar ve daha sonra ayrılmak zor. Aynı yazılım için de geçerlidir. Önerilen okuma: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 – burzum
Özetlerdeki ilkelerin ayrılığını anlıyorum ve bunun diğer birçok durum için nasıl geçerli olduğunu görebiliyorum. ama Varlıklar ve Tablolar ile uygulayarak zor bir zaman geçiriyordum.Sanırım şimdi anlıyorum. Varlıklar, v2'nin kullandığı çift "aptal" dizilerin yerine geçer, bu yüzden geldikleri rol çok sınırlıydı. Bir varlığın bir tablodan gelmesi gerekmiyor ve hiçbir şey onun bire kalıcı olmasını gerektirmiyor. Hiçbir zaman bir "id" olabilir, asla "beforeSave()", vb. Sırasında Table sınıfı tarafından uygulanan varsayılan değerleri almazsınız. – Ethan