Şimdiki durum:
- Ben current version denetleyicileri olarak sınıflarını kullanan benim MVC Framework var.
- Ben basit kullanan benim old MVC Framework, düz denetleyicileri olarak içeren bazı "eski" modülleri var.
Çok anlamına gelir basitleştirilmiş:
New Version:
<?PHP
class blaController extends baseController {
private $intVar;
function dosomethingFunction() {
$this->intVar = 123;
$this->view('myView');
}
}
?>
Old Version:
<?PHP
$globalVar = 123;
// view "controllername" is automatically shown
?>
Şimdi her şeyi yeniden yazmak zorunda kalmadan yeni MVC benim eski denetleyicileri kullanmaya muktedir bir sarıcı yazmaya çalışıyorum. Bunu yapmak için, bir "kapsayıcı" denetleyicisi var:
class wrapController extends baseController {
function dosomethingFunction() {
require 'old_dosomething.function.php';
$this->view('old_dosomething_view');
}
}
(Bir kez daha: Bu çok, çok basitleştirilmiş - sadece üzerinde fikir almak için değil gerçek kodu.).
Bu yaklaşım ile sorun daha önce global değişken $ globalVar artık sadece "yöntemiyle dosomethingFunction" içinde var ve görünüm tarafından erişilemez olmasıdır.
Ben $ globalVar bir kez daha küresel alanda mevcut olacağını, böylece "genel kapsamda" gibi davranmasına ihtiyaç zorlayacağını, bu durum olmazdı.
Yani: "require_global" veya benzer bir şey elde etmek için bir yol var mı?
(Benim problem için bir çözüm "küresel" komutları bir grup ile başlamak benim eski kontrolörleri değiştirmek olacaktır, ama ben o eski kod çok değiştirmek zorunda değilsiniz, bir çözümü tercih ederim.)
(Not: GLOBALS kötü olduğunu söyleme Lütfen tamamen bu sorunun noktasını özlüyor Sadece yeni, temiz bir ortamda çalışan bazı eski kod tutmak için bir gereklilik olduğunu kabul ediyoruz...)