PHP bir sınıf için var

4 Cevap php

Ben oturum açma amaçlı bir PHP sınıfını kullanıyorum. Oturum açma işlemi kullanıcı için denetler MySQL veritabanı bunun gibi tanımlanır:

    class flexibleAccess{

  var $dbName = 'mydatabase';

Ben farklı kişiler için uygulama yüklemek Ancak, bu $ DBName sürekli değişiklikler gerekiyor. Ben bu yüzden bu giriş sınıfı bir yerde "gizli" olduğu gibi orada cadı daha kolay değiştirmek olurdu benim veritabanı bilgilerini tutmak bir config dosyası yapmaya karar verdik. Sorun böyle bir şey yapmak istiyorum:

class flexibleAccess{

      var $dbName = $_SESSION['mydatabase'];

And I get the error: "Parse error: parse error in path/access.class.php on line 43" The line 43 is the line with $dbName... Why can't I use this to dynamically get my values from the session ? And how should I use it ?

Teşekkürler

4 Cevap

Bir constructor bunu (burada varsayarak kulüpler php5 ...)

class flexibleAccess{

   private $dbName;

   function __construct() {
         $this->dbName = $_SESSION['mydatabase'];
   }
}

PHP4, __ yerine sınıfın adı ile inşa değiştirin.

Muhtemelen oturumda veritabanı yapılandırması koymak gerekir. Bu bana biraz riskli hissediyor.

Ben bilgileri içeren bir yapılandırma dosyası oluşturun ve bir sabiti ile şunlardır:

dbconfig.php:

constant("DBNAME", 'mydatabase');

flexibleaccess.php:

require_once 'dbconfig.php';

class flexibleAccess {
  private $dbname;

  // set the default database name to the constant DBNAME
  // but allow override
  public function __construct ( $dbname = DBNAME )
  {
    $this->dbname = $dbname;
  }
}

Veritabanı erişimi gereken herhangi bir dosya:

require_once 'flexibleaccess.php';

$db = new flexibleaccess();

Tabii ki, bir sabiti olarak ayarlamak ot gerekmez. Anahtar sizin kodundan ayrı bir dosyada yapılandırma koyarak konum olmasıdır.

Sen gibi sınıf kurucusu içinde bu değişkeni atamak zorunda PHP 4 only allows constant values as initializers:

PHP 4, var değişkenler için sadece sabit initializers izin verilir. Olmayan sabit değerleri ile değişkenlerini başlatmak için, bir nesne sınıfından inşa edilirken otomatik olarak adlandırılan bir başlatma fonksiyonu gerekir. Bu tür bir işlev (aşağıya bakınız), bir yapıcı olarak adlandırılır.

Sınıf, örneğin, sınıf, arama sırasında bu bilgileri okumalısınız nerede Alternatif belirtebilirsiniz:

<?php
$login = new flexibleAccess();
$login->dbName = $_SESSION['mydatabase'];
?>

Bu şekilde sınıf temiz kalır ve tercih ettiğiniz herhangi bir kaynak veya yöntem veritabanı adı (ve değişebilir diğer bilgileri) kabul edebilir. Bir bonus olarak, hangi kullanmakta olduğunuz PHP sürümü, hem de iyi iş olacak dikkat etmek zorunda değilsiniz.

Bu yardımcı olur umarım!

-Dave