Ben iki sınıf var, bir İş Mantığı Class {} BLO ve diğer bir Data Access Sınıf {} DAO ve benim Dao sınıf benim BLO sınıfta bağımlılığı var.
Temelde blo bir nesne oluşturma ve komut isteminden dosyasında geçirerek olarak kurucu içinde kullanarak benim BLO sınıfta içine yazmak için csv dosyası açıyorum:
Kod:
$this->fin = fopen($file,'w+') or die('Cannot open file');
Şimdi Blo içimde çağrı DAO sınıfa bağımlılığı vardır ve Dao getCurrentDBSnapshot işlevini çağırın ve bu veri akışına doldurulan yüzden açık akışı geçer bir fonksiyon notifiy var.
Kod: Blo Class Constructor:
public function __construct($file)
{
//Open Unica File for parsing.
$this->fin = fopen($file,'w+') or die('Cannot open file');
// Initialize the Repository DAO.
$this->dao = new Dao('REPO');
}
Dao Yöntemi ile etkileşim ve getCurrentDBSnapshot çağrı blo Sınıf yöntemi.
public function notifiy()
{
$data = $this->fin;
var_dump($data); //resource(9) of type (stream)
$outputFile=$this->dao->getCurrentDBSnapshot($data); // So basically am passing in $data which is resource((9) of type (stream)
}
Dao fonksiyonu: getCurrentDBSnapshot Veritabanı tablo geçerli durumunu almak.
public function getCurrentDBSnapshot($data)
{
$query = "SELECT * FROM myTable";
//Basically just preparing the query.
$stmt = $this->connection->prepare($query);
// Execute the statement
$stmt->execute();
$header = array();
while ($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
if(empty($header))
{
// Get the header values from table(columnnames)
$header = array_keys($row);
// Populate csv file with header information from the mytable
fputcsv($data, $header);
}
// Export every row to a file
fputcsv($data, $row);
}
var_dump($data);//resource(9) of type (stream)
return $data;
}
Yani temelde bildirir am getCurrentDBSnapshot türe (akım), kaynak (9) geri almak ve Blo sınıf yöntemi $ Outputfile içine akışı depolamak.
Her iki durumda da bana verir çünkü Şimdi ben yazmak için açıldı ve bu nedenle, $ Outputfile veya $ veri FCLOSE gereken dosyayı kapatmak istiyorum:
var_dump(fclose($outputFile)) as bool(false)
var_dump(fclose($data)) as bool(false)
ve
var_dump($outputFile) as resource(9) of type (Unknown)
var_dump($data) as resource(9) of type (Unknown)
My question is that if I open file using fopen in class A veif I call class B method from Class A method vepass an open stream, in our case $data, than Class B would perform some work vereturn back veopen stream veso
How can I close that open stream in Class A's method or it is ok to keep that stream open venot use fclose ?
Bu nasıl uygulanabileceği gibi çok emin değilim gibi girdiler seviniriz.