başka 1 sayfadan nesneyi taşımak?

5 Cevap php

Hay çocuklar. PHP OOP için biraz yeniyim. Ben nesneleri yazmak ve oluşturmak için nasıl öğrendim. Bir nesneyi almak ve başka bir komut dosyası için geçmek için bir yolu var mı? GET veya POST veya OTURUMU falan kullanarak ya. Nasıl ben bir nesne tek bir sayfada bazı değişkenleri atamak yoksa, o zaman başka bir sayfada aynı nesne daha değişkenleri atamak?

Teşekkürler

5 Cevap

Siz oturumda nesneleri saklayabilirsiniz ama siz session_start (çağırmadan önce sınıf tanımını içeren dosyayı eklemeniz gerekir) (veya class autoloading kullanmak ve oturumu başlamadan önce bu kurmak). Örneğin:

On every page:

//include class definition
require('class.php');

//start session
session_start();

1st page:

$object = new class();
$object->someProperty = 'hello';

//store in session
$_SESSION['object'] = $object;

Subsequent pages:

$object = $_SESSION['object'];

//add something else, which will be stored in the session
$object->anotherPropery = 'Something';

You could store the object in a SESSION. You can serialize the object and pass through GET or POST.

Eğer nesne site genelinde devam etmek istiyorsanız, o OTURUM muhtemelen en iyi bahistir.

Sen $ _SESSION kullanabilirsiniz. ama sadece o oturum için olacaktır.

Bir object katları 'komut' kullanma:

First, you have to decide what kind of structure your OOP application has. If you use something like MVC pattern, you do not have to this by using SESSION or REQUEST, because you can 'plug' the objects you want to use into 'one'. What does this mean?

Hızlı bir örnek:

  1. Kullanıcı A sitenizin index.php girer
  2. Now you can load the content from a static index.html, but if you want to check whether the user is authenticated to see specific contents e.g. the 'Admin Login', you can use include_once('Authentication.php') and initiate a class from this file, e.g. <?php $Auth = new Auth_Handler; ?> This will make the Auth class also available in the index.php or any other file you want to include this class. If you want to pass the authentication class' return value to another file e.g. 'register.php' you can use the SESSION or any other Cache. Passing whole objects is not recommend due to their size. Including and initiating the wanted classes at the beginning of files is much better. And passing the returns by SESSION uses less space.

Gerçekten kullanmak istediğiniz çerçeve veya API birini, ya da ne proje oluşturmak istediğiniz bağlıdır.

İşte Tom Haigh tarafından cevap açısından autoloading bir örnek:

Eğer oturumu başlamadan önce:

function __autoload($className) {
    $file = PATH_TO_FOLDER_WITH_ALL_CLASS_FILES."/".$className.'.php';
    if(file_exists($file)) {
        require_once $file;
    }
}

session_start();

Nesnesini ileterek Sayfa:

$object = new class();
$object->someProperty = 'hello';

//store in session
$_SESSION['object'] = $object;

Nesneyi alma Sayfa:

$object = $_SESSION['object'];

//add something else, which will be stored in the session
$object->anotherPropery = 'Something';

Eğer oturumdan veri almak ise özdevinimli_yükle yöntemi otomatik nesneleri yüklemek olacaktır.