Nasıl yürütmek ve bir değişkene bir. Php dosyanın içeriğini almak için?

6 Cevap php

Ben başka sayfada bir değişken bir. Php dosyanın içeriğini almak istiyorum.

İki dosya, myfile1.php ve myfile2.php vardır.

myfile2.php

<?PHP
    $myvar="prashant"; // 
    echo $myvar;
?>

Şimdi myfile1.php bir değişkende myfile2.php tarafından yankılandı değerini almak istiyorum, ben follwing yolu denedim, ama onun php etiketi () de dahil olmak üzere tüm içeriği alarak.

<?PHP
    $root_var .= file_get_contents($_SERVER['DOCUMENT_ROOT']."/myfile2.php", true);
?>

Ben içerikleri başka bir PHP dosyasında tanımlanan bir değişken içine bir PHP dosyası tarafından döndürülen alabilirsiniz nasıl söyle lütfen.

Teşekkürler

6 Cevap

Bunu yapmak için include direktifini kullanabilirsiniz.

Dosya 2:

<?php
    $myvar="prashant";
?>

Dosya 1:

<?php 

include('myfile2.php');
echo $myvar;

?>

Iki şeyi ayırt etmek gerekir:

  • Eğer dahil dosyanın çıkışını (echo, print, ...) yakalamak ve bir değişken çıkış (dize) kullanmak istiyor musunuz?
  • Eğer dahil dosyaları belirli dönüş değerlerini ve host komut bir değişken olarak kullanmak istiyor musunuz?

Lütfen dahil dosyaları yerel değişkenler her zaman host yazısının geçerli kapsamı taşınacak - Bu unutulmamalıdır. Sen birine bu özelliklerin tümünü birleştirebilirsiniz:

include.php

$hello = "Hello";
echo "Hello World";
return "World";

host.php

ob_start();
$return = include 'include.php'; // (string)"World"
$output = ob_get_clean(); // (string)"Hello World"
// $hello has been moved to the current scope
echo $hello . ' ' . $return; // echos "Hello World"

Konfigürasyon dosyalarını kullanırken özellikle return-özellik kullanışlı geliyor.

config.php

return array(
    'host' => 'localhost',
     ....
);

app.php

$config = include 'config.php'; // $config is an array

EDIT

Çıkış tamponları kullanırken performans cezası ile ilgili sorunuza cevap bulmak için, ben sadece bazı hızlı test yaptım. 1.000.000 ob_start() ötelenmiş ve $o = ob_get_clean() benim Windows makinede (PHP için belki değil en iyi çevre) üzerinde yaklaşık 7.5 saniye sürebilir ilgili. Ben performans etkisi oldukça küçük sayılabilecek gerektiğini söylemek istiyorum ...

Sadece içerik isteseydim echo() 'dahil sayfası tarafından ed, çıktı tamponlama kullanarak düşünebiliriz:

ob_start();
include 'myfile2.php';
$echoed_content = ob_get_clean(); // gets content, discards buffer

Bkz http://php.net/ob_start

"Aslında ben sadece bana doğrudan değer vermek herhangi bir dönüş türü bir yöntem orada bakıyordu" - Sen sadece kendi sorusunu yanıtladı.

Bkz http://sg.php.net/manual/en/function.include.php, Örnek 5

dosya1.php:

<? return 'somevalue'; ?>

file2.php:

<?

$file1 = include 'file1.php';
echo $file1; // This outputs 'somevalue'.

?>

Eğer ile site kullanımı her yerinden almak istiyorsanız

<?php
$URL = 'http://www.example.com/';
$homepage = file_get_contents($URL);
echo $homepage;
?>

Bu kodu deneyin

myfile1.php

<?php
    echo file_get_contents("http://domainname/myfile2.php");
?>

myfile2.php

<?PHP
    $myvar="prashant";
    echo $myvar;
?>