# PHP Yardımcı Fonksiyonları

## checkPort

checkPort fonksiyonu bizim için bir portun açık olup olmadığını kontrol etmekte buna göre bir boolean yanıtı döndürmektedir. Fonksiyonu kullanabilmek için iki adet argüman sağlamanız gerekmektedir.

| Argüman  | Açıklama                                 | Veri Tipi |
| -------- | ---------------------------------------- | --------- |
| $ip      | IP adresi yazmanız gerekmektedir.        | String    |
| $port    | Port numarası belirtmeniz gerekmektedir. | Integer   |
| (Return) | Fonksiyonun geri döndürdüğü değer        | Boolean   |

## Request

PHP tarafındaki request fonksiyonu bizim kontrolcümüze POST ile gönderilmiş değişkenleri yakalamamızı sağlar. Örneğin bir inputtan clientHostname isimli bir veri gönderdiysek bunu PHP tarafında `request("clientHostname")` olarak kolayca yakalayabiliriz.

| Argüman | Açıklama                       | Veri Tipi |
| ------- | ------------------------------ | --------- |
| $name   | Attığınız requestteki key ismi | String    |

## server, user, extension

Bu helperlar Laravel tarafındaki server, user, extension modellerini getirmektedir. `server()->name` örnek bir kullanımdır. Detaylarını anlayabilmek için eklenti kodlarınızda `dump(server())` tarzı bir kullanım yaparsanız içeriğini görüntüleyebilirsiniz.

## Respond

Yanıt döndürme fonksiyonudur. İki argüman almaktadır. JSON olarak karşıya veri getirir, dönen verinin örnek tipi aşağıdaki gibidir.

```php
{"message": "pardus", "status": 200}
```

Anlaşılacağı üzere fonksiyon da iki adet argümanı mesaj ve durum kodu olarak almaktadır. Yukarıdaki yanıtı alabilmek için fonksiyonu aşağıdaki gibi çalıştırırız.

```php
return respond("pardus", 200);
```

| Argüman  | Açıklama                                                                                         | Veri Tipi |
| -------- | ------------------------------------------------------------------------------------------------ | --------- |
| $message | Mesajınızı veya döndürmek istediğiniz PHP, HTML herhangi bir veriyi gönderirsiniz.               | Auto      |
| $status  | HTTP durum kodlarından birini istediğiniz şekilde gönderiniz. 200 başarılı anlamına gelmektedir. | Integer   |

## View

View fonksiyonu controlleriniz üzerinden bir view dosyasını renderlamanızı sağlamaktadır. Örnek olarak aşağıdaki gibi görebiliriz.

```php
return view("table", [
    "value" => $files,
    "title" => ["İsim", "İzinler", "Sahip", "Grup", "Dosya Boyutu", "Son Değiştirilme"],
    "display" => ["name", "permissions", "user", "group", "size", "date"]
]);
```

## Validate

Validate fonksiyonu Laravel üzerindeki gibi çalışmaktadır. Genel kurallarına ve örnek kullanıma [Validation - Laravel Docs](https://laravel.com/docs/8.x/validation#quick-writing-the-validation-logic) kısmından ulaşabilirsiniz.

Kullanım şekli olarak Laravel ile birebir uyuşmasa da kuralların yazıldığı kısım birebir uyuşmaktadır. Gelin bir örnek kullanıma bakalım.

```php
validate([
    'username' => 'required|string',
    'password' => 'required|string'
]);
```

validate fonksiyonu bir kontrolcü fonksiyonunun başında çağırılır. Aldığı tek argüman kurallar listesidir. Kuralların kullanımında örnek kullanım yukarıdaki gibidir. Örnek olarak listenin ilk elemanından bahsedelim. Bize form data ile gönderilmiş olan username verisi `request("username")` ile eşleşmektedir. Bu eşleşme uyduğunda doğrulayıcı fonksiyonumuz value olarak verdiğimiz `required|string` kurallarına göre `request("username")` verisini doğrulayacaktır. Eğer doğrulanamazsa da kontrolcü fonksiyonunun çalışması durdurulup, mesaj olarak doğrulanamadığına dair hata mesajı dönecektir.

| Argüman | Açıklama                 | Veri Tipi |
| ------- | ------------------------ | --------- |
| $rules  | Kuralların olduğu liste. | Array     |

{% hint style="info" %}
[Validation - Laravel Docs](https://laravel.com/docs/8.x/validation#quick-writing-the-validation-logic) sayfasından validation fonksiyonunun detaylı dokümanına ulaşabilirsiniz.
{% endhint %}

## Laravel Helpers

Liman eklenti sandboxu üzerinde Laravel Helpers paketi çalışmaktadır. Bu paket ile Array ve Object manipülasyonları, dosya yolu yardımı, string manipülasyonları, fluent string manipülasyonları, URL işlemleri ve çeşitli ek fonksiyonlar (dump, abort, retry, response, bcrypt, view\...) yer almaktadır. Bu paketin yer alması neredeyse Laravel üzerinde çalışan çoğu fonksiyonu eklentilerinizde de kullanabileceğiniz anlamına gelmektedir.

{% hint style="info" %}
<https://laravel.com/docs/8.x/helpers> adresinden detaylı dokümana ulaşabilirsiniz.
{% endhint %}

## Kendi Helperlarınızı Geliştirin

Kendi özel helperlarınızı geliştirmek için eklenti klasörünüz içerisinde `app/Helper/Helpers.php` içerisinde daha önce tanımladığımız checkPort fonksiyonuna bakarak tanımlama yapabilirsiniz, daha önceden topluluk tarafından geliştirilmiş Helper dosyalarını incelemek için Liman Market'ten indirdiğiniz açık kaynaklı eklenti kodlarına da göz atabilirsiniz.\
[zekiahmetbayar/liman-sambahvl](https://github.com/zekiahmetbayar/liman-sambahvl/blob/main/app/Helpers/Helpers.php) örnek eklentisinde sistemdeki sertifika kontrolleri için ve LDAP bağlantı kontrolü için de yardımcı fonksiyonlar geliştirilmiştir.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.liman.dev/eklenti-gelistirme/genel-bilgiler/yardimci-fonksiyonlar.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
