v2.5.2
Giriş yap

url'yi parçalayıp dosya adı ve fonksiyon olarak çağırma

hasaneryilmaz
800 defa görüntülendi

klasör dosya yapısı
-app
--controller
---profil.php
index.php

profil.php içindeki kod

<?php 
    function index()
    {
        echo "burası profil sayfası";
    }
    
    function ekle()
    {
        echo "Burası profil ekleme sayfası";
    }

ben link olarak /profil/HasanERYILMAZ

bu şekilde girinde index fonksiyonu çalışsın

link olarak /profil/ekle

şeklinde girincede ekle fonksiyonu çalışsın istiyorum

bu yapıyı nasıl kodlayabilirim.

Cevap yaz
Cevaplar (4)
hasaneryilmaz
1484 gün önce

hocam çok sağolasın uğraştın o kadar lakin genel bir class oluşturup


<?php


class URL {

    public function ekle()
    {
        echo "ekle çalıştı";
    }

    public function goster()
    {
        echo "göster çalıştı";
    }

}

$degisken = "goster"; <-- urlden  gelen veya elle girilen fonksion ismi

URL::$degisken();

bu şekilde yazınca çözebiliyormuşuz.

umityatarkalkmaz
1484 gün önce
//kopyalayarak kodu denemen için birde fonksiyon oluşturdum
function ekle(){
echo 'ekle calisti';
}
//Fonksiyonların isimlerini bir dizide tutuyoruz ben ekle ve deneme adında 2 eleman ekledim
$fonksiyonlarim = [
    'ekle','deneme'
    ];
//$url büyük ihtimalle $route[1] olacaktır 
$url = 'ekle';

// in_array() ile fonksiyonlarimde aradığımız fonksiyon varmı diye kontorl ediyoruz
if(in_array($url,$fonksiyonlarim)){
    //var ise bu şekilde çalıştıra biliyormuşuz 
    $url();
}
//denerken galiba php 7.4.7 de denedim online bir php çalıştırma sitesinde denedim

hasaneryilmaz
1484 gün önce

Tamamdır hocam diyelim bu şekilde yazdık atıyorum benim 100 tane 200 tane dosya içinde fonksiyonum yar

her defasında else if ekleyip sonuna mı eklemem gerekiyor.

daha kolay bir mantığı vardır büyük ihtimal


$hangifonksiyon = "ekle";

$hangifonksiyon(); <-- burada ekle fonksiyonunu çağırcak

gibi

umityatarkalkmaz
1484 gün önce
$routeExplode = explode('?', $_SERVER['REQUEST_URI']);
$route = array_values(array_filter(explode('/', $routeExplode[0])));
//$route değişkenine sitenin url kısmını '/'lardan bölerek ayırıyoruz $route[0] büyük ihtimalle profilbuyüzden $route[1] için denetim yapcağız
//ilk denetimi bütük ihtimalle yapmana gerek yok ama genede eklemek istedim
if($route[0]=='profil'){
    if($route[1]=='ekle'){
     //eğer profilden sonra gelen yer ekle ise ekle fonksiyonunu çalıştırıyoruz
        ekle();
    }else{
     //ekleden farklı bir değer alırsa index fonksiyonu çalışıyor indexten farklı bir fonksiyon ekleyeceksen else if kullanarak onunda denetimini yapman gerekecektir
        index();
    }
}