PHP 5.3 sınıflar arasında bir oturum anahtarı geçmek için en uygun tasarımı çalışmak için çalışıyorum.
Oturum anahtarı, bir 3. parti API alınan ve benim uygulama çeşitli API'si, tüm bu oturum anahtarı içeri geçirilecek gerektiren çağrıları yapar
Ben ilgili API aramaların egClass sepeti, çağrıldığında, vb API_GetCart (), API_AddItem () gibi aramaların verileri döndürmek için API isteği kapalı ateş edeceğini yöntemleri tutan tutmak için sınıfları oluşturduk
Ben tek çerez oturum anahtarını (şimdiye kadar gerekli olan tek çerez) depolamak ve benim sınıfların hemen hemen tüm bu çerez değeri kullanılabilir hale getirmek için ihtiyaç duyuyorum. Ben oturum verilerini saklamak için bir veritabanı veya $ _SESSION kullanamazsınız. 3. parti API vs sepet içeriği gibi şeyler için oturum yönetimi bakıyor
Bir kullanıcı ilk defa benim app ulaştığında yeni bir çerez için yeni bir oturum anahtarı atamak ve aynı zamanda bizler bu yana çerez olarak henüz mevcut değil (bu değeri geçmek hem de gerekiyor hiçbir çerez değeri olacaktır Hala diğer sınıflara aynı HTTP isteği) işleme.
Ben Bir fikir böyle bir Session sınıf oluşturmak için, ve yapıcı kod denetimi / kapma oturumu koydu.
class Session {
public $sk;
function __construct() {
//code to check if user has sessionkey (sk) in cookie
//if not, grab new sessionkey from 3rd party API and assign to new cookie
// $sk = 'abcde12345'; //example $sk value
}
}
Sonra argüman olarak sınıf yapıcısı veya yöntem argüman olarak da, tüm görünüm sayfalarındaki I Oturumun yeni bir örneğini istiyorum ve daha sonra (neredeyse tüm do) gerektiriyorsa, her sınıfın içine nesne geçmek.
orderSummary.php
$s = new Session;
//$s currently would only hold one variable, $sk = "abcde12345"
//but in the future may hold more info or perform more work
// what is best approach to making the sessionkey
// available to all classes? arg to constructor or method... or neither :)
$basket = new Basket;
$baskSumm = $basket->getBasketSummary();
$billing = new Billing;
$billSumm = $billing->getBillingSummary();
$delivery = new Delivery;
$delSumm = $delivery->getDeliverySummary();
//code to render as HTML the customer's basket details
//as well as their billing and delivery details
Iyi fikir (gerçekten sadece tek bir değer tutan) bir Session sınıfını yaratıyor? Daha değerleri tutmak ve daha fazla denetimi yapmak gerekebilir göz önüne alındığında, bunun bir sınıf yapma 'doğru' hissetti. Çeşitli sınıflara bu değeri geçen açısından, bu, onların kurucu Session nesnesi, örneğin geçmek için iyi olurdu
$se = new Session;
$basket = new Basket($se);
$baskSumm = $basket->getBasketSummary();
Bazı rehberlik çok takdir olurdu OOP yeniyim.