xref: /web-php/releases/8.0/tr.php (revision c093fb53)
1<?php
2$_SERVER['BASE_PAGE'] = 'releases/8.0/tr.php';
3include_once __DIR__ . '/common.php';
4
5releases\php80\common_header(
6    'PHP 8.0, PHP dili için önemli bir güncellemedir. Optimizasyonlar ve yeni özellikler: Adlandırılmış ' .
7    'Değişkenler, Union Types, Attributes, Kurucularda Özellik Tanımı, Match İfadesi, Nullsafe Operatorü, ' .
8    'JIT(Anında Derleme) yanında tip sistemi, hata işleme ve tutarlılıkta iyileştirmeler içerir.');
9
10?>
11<section class="php8-section php8-section_dark php8-section_header center">
12  <div class="page-tools">
13    <div class="change-language">
14        <?php releases\php80\language_chooser('tr'); ?>
15    </div>
16  </div>
17  <div class="php8-section__content">
18    <div class="php8-logo">
19      <img src="/images/php8/logo_php8.svg" alt="php8" height="126" width="343">
20    </div>
21    <div class="php8-title">Yayında!</div>
22    <div class="php8-subtitle">
23      PHP 8.0, PHP dili için önemli bir güncellemedir.<br class="display-none-md"> Optimizasyonlar ve yeni özellikler:
24      Adlandırılmış Değişkenler, Union Types, Attributes, Kurucularda Özellik Tanımı, Match İfadesi, Nullsafe
25      Operatorü, JIT(Anında Derleme) yanında tip sistemi, hata işleme ve tutarlılıkta iyileştirmeler içerir.
26    </div>
27    <div class="php8-button-wrapper center">
28      <a class="php8-button php8-button_light" href="/downloads">PHP 8'e geçiş yapın!</a>
29    </div>
30  </div>
31</section>
32
33<section class="php8-section center">
34  <div class="php8-compare">
35    <h2 class="php8-h2" id="named-arguments">
36      Adlandırılmış Değişkenler
37      <a class="php8-rfc" href="https://wiki.php.net/rfc/named_params">RFC</a>
38    </h2>
39    <div class="php8-compare__main">
40      <div class="php8-compare__block example-contents">
41        <div class="php8-compare__label">PHP 7</div>
42        <div class="php8-code phpcode">
43            <?php highlight_php_trimmed(
44                'htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, \'UTF-8\', false);',
45            );?>
46        </div>
47
48
49      </div>
50      <div class="php8-compare__arrow"></div>
51      <div class="php8-compare__block example-contents">
52        <div class="php8-compare__label php8-compare__label_new">PHP 8</div>
53        <div class="php8-code phpcode">
54            <?php highlight_php_trimmed(
55                'htmlspecialchars($string, double_encode: false);',
56            );?>
57        </div>
58      </div>
59    </div>
60    <div class="php8-compare__content">
61      <ul>
62        <li>Opsiyonel parametreleri atlayabiliyor ve yalnızca zorunlu olanları belirtebiliyorsunuz.</li>
63        <li>Parametrelerin sırası önemli değil ve kendi kendilerini dokümante ediyorlar.</li>
64      </ul>
65    </div>
66  </div>
67
68  <div class="php8-compare">
69    <h2 class="php8-h2" id="attributes">
70      Attributes
71      <a class="php8-rfc" href="https://wiki.php.net/rfc/attributes_v2">RFC</a> <a class="php8-rfc" href="/manual/tr/language.attributes.php">Doc</a>
72    </h2>
73    <div class="php8-compare__main">
74      <div class="php8-compare__block example-contents">
75        <div class="php8-compare__label">PHP 7</div>
76        <div class="php8-code phpcode">
77            <?php highlight_php_trimmed(
78                'class PostsController
79{
80    /**
81     * @Route("/api/posts/{id}", methods={"GET"})
82     */
83    public function get($id) { /* ... */ }
84}',
85            );?>
86        </div>
87      </div>
88      <div class="php8-compare__arrow"></div>
89      <div class="php8-compare__block example-contents">
90        <div class="php8-compare__label php8-compare__label_new">PHP 8</div>
91        <div class="php8-code phpcode">
92            <?php highlight_php_trimmed(
93                'class PostsController
94{
95    #[Route("/api/posts/{id}", methods: ["GET"])]
96    public function get($id) { /* ... */ }
97}',
98            );?>
99        </div>
100      </div>
101    </div>
102    <div class="php8-compare__content">
103      <p>PHPDoc yorum satırları yerine PHP sözdizimi ile yapılandırılmış metadata kullanılabiliyor.</p>
104    </div>
105  </div>
106
107  <div class="php8-compare">
108    <h2 class="php8-h2" id="constructor-property-promotion">
109      Kurucularda Özellik Tanımı
110      <a class="php8-rfc" href="https://wiki.php.net/rfc/constructor_promotion">RFC</a> <a class="php8-rfc" href="/manual/en/language.oop5.decon.php#language.oop5.decon.constructor.promotion">Doc</a>
111    </h2>
112    <div class="php8-compare__main">
113      <div class="php8-compare__block example-contents">
114        <div class="php8-compare__label">PHP 7</div>
115        <div class="php8-code phpcode">
116            <?php highlight_php_trimmed(
117                'class Point {
118  public float $x;
119  public float $y;
120  public float $z;
121
122  public function __construct(
123    float $x = 0.0,
124    float $y = 0.0,
125    float $z = 0.0
126  ) {
127    $this->x = $x;
128    $this->y = $y;
129    $this->z = $z;
130  }
131}',
132            );?>
133        </div>
134      </div>
135      <div class="php8-compare__arrow"></div>
136      <div class="php8-compare__block example-contents">
137        <div class="php8-compare__label php8-compare__label_new">PHP 8</div>
138        <div class="php8-code phpcode">
139            <?php highlight_php_trimmed(
140                'class Point {
141  public function __construct(
142    public float $x = 0.0,
143    public float $y = 0.0,
144    public float $z = 0.0,
145  ) {}
146}',
147            );?>
148        </div>
149      </div>
150    </div>
151    <div class="php8-compare__content">
152      <p>Sınıfların özelliklerini tanımlamak için daha az kodlama yapılabiliyor.</p>
153    </div>
154  </div>
155
156  <div class="php8-compare">
157    <h2 class="php8-h2" id="union-types">
158      Union types
159      <a class="php8-rfc" href="https://wiki.php.net/rfc/union_types_v2">RFC</a> <a class="php8-rfc" href="/manual/en/language.types.declarations.php#language.types.declarations.composite.union">Doc</a>
160    </h2>
161    <div class="php8-compare__main">
162      <div class="php8-compare__block example-contents">
163        <div class="php8-compare__label">PHP 7</div>
164        <div class="php8-code phpcode">
165            <?php highlight_php_trimmed(
166                'class Number {
167  /** @var int|float */
168  private $number;
169
170  /**
171   * @param float|int $number
172   */
173  public function __construct($number) {
174    $this->number = $number;
175  }
176}
177
178new Number(\'NaN\'); // Ok',
179            );?>
180        </div>
181      </div>
182      <div class="php8-compare__arrow"></div>
183      <div class="php8-compare__block example-contents">
184        <div class="php8-compare__label php8-compare__label_new">PHP 8</div>
185        <div class="php8-code phpcode">
186            <?php highlight_php_trimmed(
187                'class Number {
188  public function __construct(
189    private int|float $number
190  ) {}
191}
192
193new Number(\'NaN\'); // TypeError',
194            );?>
195        </div>
196      </div>
197    </div>
198    <div class="php8-compare__content">
199      <p>Değişken türlerinin kombinasyonu için PHPDoc açıklamaları yerine çalışma zamanında doğrulanan
200        birleşim türleri (union types) tanımlamaları kullanılabiliyor.</p>
201    </div>
202  </div>
203
204  <div class="php8-compare">
205    <h2 class="php8-h2" id="match-expression">
206      Match İfadesi
207      <a class="php8-rfc" href="https://wiki.php.net/rfc/match_expression_v2">RFC</a> <a class="php8-rfc" href="/manual/en/control-structures.match.php">Doc</a>
208    </h2>
209    <div class="php8-compare__main">
210      <div class="php8-compare__block example-contents">
211        <div class="php8-compare__label">PHP 7</div>
212        <div class="php8-code phpcode">
213            <?php highlight_php_trimmed(
214                'switch (8.0) {
215  case \'8.0\':
216    $result = "Oh no!";
217    break;
218  case 8.0:
219    $result = "This is what I expected";
220    break;
221}
222echo $result;
223//> Oh no!',
224            );?>
225        </div>
226      </div>
227      <div class="php8-compare__arrow"></div>
228      <div class="php8-compare__block example-contents">
229        <div class="php8-compare__label php8-compare__label_new">PHP 8</div>
230        <div class="php8-code phpcode">
231            <?php highlight_php_trimmed(
232                'echo match (8.0) {
233  \'8.0\' => "Oh no!",
234  8.0 => "This is what I expected",
235};
236//> This is what I expected',
237            );?>
238        </div>
239      </div>
240    </div>
241    <div class="php8-compare__content">
242      <p>Yeni match ifadesi switch'e çok benzer ve aşağıdaki özelliklere sahiptir:</p>
243      <ul>
244        <li>Match bir ifadedir, sonucu bir değişkende saklanabilir veya döndürülebilir.</li>
245        <li>Match'in karşılıkları tek satır ifadeleri destekler ve break; kullanılması gerekmez.</li>
246        <li>Match katı (strict) tip karşılaştırma yapar.</li>
247      </ul>
248    </div>
249  </div>
250
251  <div class="php8-compare">
252    <h2 class="php8-h2" id="nullsafe-operator">
253      Nullsafe Operatorü
254      <a class="php8-rfc" href="https://wiki.php.net/rfc/nullsafe_operator">RFC</a>
255    </h2>
256    <div class="php8-compare__main">
257      <div class="php8-compare__block example-contents">
258        <div class="php8-compare__label">PHP 7</div>
259        <div class="php8-code phpcode">
260            <?php highlight_php_trimmed(
261                '$country =  null;
262
263if ($session !== null) {
264  $user = $session->user;
265
266  if ($user !== null) {
267    $address = $user->getAddress();
268
269    if ($address !== null) {
270      $country = $address->country;
271    }
272  }
273}',
274            );?>
275        </div>
276      </div>
277      <div class="php8-compare__arrow"></div>
278      <div class="php8-compare__block example-contents">
279        <div class="php8-compare__label php8-compare__label_new">PHP 8</div>
280        <div class="php8-code phpcode">
281            <?php highlight_php_trimmed(
282                '$country = $session?->user?->getAddress()?->country;',
283            );?>
284        </div>
285      </div>
286    </div>
287    <div class="php8-compare__content">
288      <p>Null koşulları için kontroller yazmak yerine yeni Nullsafe operatörüyle çağrı zinciri
289        oluşturabilirsiniz. Oluşturduğunuz zincirdeki herhangi bir parça hatalı
290        değerlendirilirse tüm zincirin işlevi durur ve null olarak değerlendirilir.</p>
291    </div>
292  </div>
293
294  <div class="php8-compare">
295    <h2 class="php8-h2" id="saner-string-to-number-comparisons">
296      Daha Akıllı String ve Sayı Karşılaştırmaları
297      <a class="php8-rfc" href="https://wiki.php.net/rfc/string_to_number_comparison">RFC</a>
298    </h2>
299    <div class="php8-compare__main">
300      <div class="php8-compare__block example-contents">
301        <div class="php8-compare__label">PHP 7</div>
302        <div class="php8-code phpcode">
303            <?php highlight_php_trimmed(
304                '0 == \'foobar\' // true',
305            );?>
306        </div>
307      </div>
308      <div class="php8-compare__arrow"></div>
309      <div class="php8-compare__block example-contents">
310        <div class="php8-compare__label php8-compare__label_new">PHP 8</div>
311        <div class="php8-code phpcode">
312            <?php highlight_php_trimmed(
313                '0 == \'foobar\' // false',
314            );?>
315        </div>
316      </div>
317    </div>
318    <div class="php8-compare__content">
319      <p>Sayısal string karşılaştırılırken PHP 8 sayısal olarak karşılaştırır. Aksi halde sayı bir
320        string'e çevrilir ve string olarak karşılaştırılır.</p>
321    </div>
322  </div>
323
324  <div class="php8-compare">
325    <h2 class="php8-h2" id="consistent-type-errors-for-internal-functions">
326      Dahili İşlevler için Tutarlı Hata Türleri
327      <a class="php8-rfc" href="https://wiki.php.net/rfc/consistent_type_errors">RFC</a>
328    </h2>
329    <div class="php8-compare__main">
330      <div class="php8-compare__block example-contents">
331        <div class="php8-compare__label">PHP 7</div>
332        <div class="php8-code phpcode">
333            <?php highlight_php_trimmed(
334                'strlen([]); // Warning: strlen() expects parameter 1 to be string, array given
335
336array_chunk([], -1); // Warning: array_chunk(): Size parameter expected to be greater than 0',
337            );?>
338        </div>
339      </div>
340      <div class="php8-compare__arrow"></div>
341      <div class="php8-compare__block example-contents">
342        <div class="php8-compare__label php8-compare__label_new">PHP 8</div>
343        <div class="php8-code phpcode">
344            <?php highlight_php_trimmed(
345                'strlen([]); // TypeError: strlen(): Argument #1 ($str) must be of type string, array given
346
347array_chunk([], -1); // ValueError: array_chunk(): Argument #2 ($length) must be greater than 0',
348            );?>
349        </div>
350      </div>
351    </div>
352    <div class="php8-compare__content">
353      <p>Artık dahili işlevlere gönderilen parametreler doğrulanamazsa Error exception fırlatıyorlar.</p>
354    </div>
355  </div>
356</section>
357
358<section class="php8-section php8-section_light">
359  <h2 class="php8-h2">Just-In-Time Derlemesi (JIT)</h2>
360  <p>
361    PHP 8, iki JIT derleme motoru sunuyor. Tracing JIT, ikisi arasında en yetenekli olanı. Karşılaştırmalarda
362    yaklaşık 3 kat daha iyi performans ve uzun süre işlem yapan bazı uygulamalarda 1,5–2 kat iyileşme gösteriyor.
363    Normal uygulamalarda performansı PHP 7.4 ile aynı.
364  </p>
365  <h3 class="php8-h3">
366    PHP 8 performasına JIT katkısının karşılaştırması
367  </h3>
368  <p>
369    <img src="/images/php8/scheme.svg" width="900" alt="Just-In-Time compilation">
370  </p>
371
372  <div class="php8-columns">
373    <div class="php8-column">
374      <h2 class="php8-h2 php8-h2_margin-top">Tip sistemi ve hata işlemede iyileştirmeler</h2>
375      <ul>
376        <li>
377          Aritmetik/bitsel operatörler için daha katı tip denetimi
378          <a href="https://wiki.php.net/rfc/arithmetic_operator_type_checks">RFC</a>
379        </li>
380        <li>
381          Soyut özellikli metodlar için doğrulama <a href="https://wiki.php.net/rfc/abstract_trait_method_validation">RFC</a>
382        </li>
383        <li>
384          Sihirli metodlar için doğru işaretlemeler <a href="https://wiki.php.net/rfc/magic-methods-signature">RFC</a>
385        </li>
386        <li>
387          Yeniden sınıflandırılan motor hataları <a href="https://wiki.php.net/rfc/engine_warnings">RFC</a>
388        </li>
389        <li>
390          Uyumsuz metod işaretleri için fatal error <a href="https://wiki.php.net/rfc/lsp_errors">RFC</a>
391        </li>
392        <li>
393          @ operatörü artık önemli hataları susturmuyor
394        </li>
395        <li>
396          Private methodlarda kalıtımlar <a href="https://wiki.php.net/rfc/inheritance_private_methods">RFC</a>
397        </li>
398        <li>
399          Mixed tipi <a href="https://wiki.php.net/rfc/mixed_type_v2">RFC</a>
400        </li>
401        <li>
402          Static return tipi <a href="https://wiki.php.net/rfc/static_return_type">RFC</a>
403        </li>
404        <li>
405          Dahili işlevler için tip açıklamaları
406          <a href="https://externals.io/message/106522">E-posta konusu</a>
407        </li>
408        <li>
409          Eklentiler için özkaynak türleri(resources) yerine opak nesneler:
410            <a href="https://php.watch/versions/8.0/resource-CurlHandle">Curl</a>,
411            <a href="https://php.watch/versions/8.0/gdimage">Gd</a>,
412            <a href="https://php.watch/versions/8.0/sockets-sockets-addressinfo">Sockets</a>,
413            <a href="https://php.watch/versions/8.0/OpenSSL-resource">OpenSSL</a>,
414            <a href="https://php.watch/versions/8.0/xmlwriter-resource">XMLWriter</a> ve
415            <a href="https://php.watch/versions/8.0/xmlwriter-resource">XML</a>.
416        </li>
417      </ul>
418    </div>
419    <div class="php8-column">
420      <h2 class="php8-h2 php8-h2_margin-top">Diğer PHP sözdizimi düzenlemeleri ve iyileştirmeleri</h2>
421      <ul>
422        <li>
423          Parametre ve closure listelerinin sonunda virgül kullanılabilmesi <a href="https://wiki.php.net/rfc/trailing_comma_in_parameter_list">RFC</a>
424          <a href="https://wiki.php.net/rfc/trailing_comma_in_closure_use_list">RFC</a>
425        </li>
426        <li>
427          Değişken atamasına gerek olmayan hataların yakalanabilmesi <a href="https://wiki.php.net/rfc/non-capturing_catches">RFC</a>
428        </li>
429        <li>
430          Değişken sözdizimlerinde iyileştirmeler <a href="https://wiki.php.net/rfc/variable_syntax_tweaks">RFC</a>
431        </li>
432        <li>
433          İsim alanındaki tanımları tek bir belirteç olarak değerlendirme <a href="https://wiki.php.net/rfc/namespaced_names_as_token">RFC</a>
434        </li>
435        <li>
436          Throw deyimi artık bir ifade (expression) <a href="https://wiki.php.net/rfc/throw_expression">RFC</a>
437        </li>
438        <li>
439          Nesnelerde ::class kullanılabilmesi <a href="https://wiki.php.net/rfc/class_name_literal_on_object">RFC</a>
440        </li>
441      </ul>
442
443      <h2 class="php8-h2 php8-h2_margin-top">Yeni Sınıflar, Arayüzler ve Fonksiyonlar</h2>
444      <ul>
445        <li>
446          <a href="https://wiki.php.net/rfc/weak_maps">Weak Map</a> sınıfı
447        </li>
448        <li>
449          <a href="https://wiki.php.net/rfc/stringable">Stringable</a> arayüzü
450        </li>
451        <li>
452          <a href="https://wiki.php.net/rfc/str_contains">str_contains()</a>,
453          <a href="https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions">str_starts_with()</a>,
454          <a href="https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions">str_ends_with()</a> fonksiyonları
455        </li>
456        <li>
457          <a href="https://github.com/php/php-src/pull/4769">fdiv()</a>
458        </li>
459        <li>
460          <a href="https://wiki.php.net/rfc/get_debug_type">get_debug_type()</a>
461        </li>
462        <li>
463          <a href="https://github.com/php/php-src/pull/5427">get_resource_id()</a>
464        </li>
465        <li>
466          <a href="https://wiki.php.net/rfc/token_as_object">token_get_all()</a> nesne implementasyonu
467        </li>
468        <li>
469          <a href="https://wiki.php.net/rfc/dom_living_standard_api">New DOM Traversal and Manipulation APIs</a>
470        </li>
471      </ul>
472    </div>
473  </div>
474</section>
475
476<section class="php8-section php8-section_dark php8-section_footer php8-footer">
477  <div class="php8-section__content">
478    <h2 class="php8-h2 center">
479      Daha iyi performans, daha iyi sözdizimi, geliştirilmiş tip desteği.
480    </h2>
481    <div class="php8-button-wrapper center">
482      <a class="php8-button php8-button_light" href="/downloads">PHP 8'e geçiş yapın!</a>
483    </div>
484    <div class="php8-footer__content">
485      <p>
486        PHP 8'i indirmek için <a href="http://www.php.net/downloads">downloads</a> sayfasını ziyaret edebilirsiniz.
487        Windows için derlenmiş sürümüne <a href="http://windows.php.net/download">PHP for Windows</a> sayfasından ulaşabilirsiniz.
488        Değişiklikler için <a href="http://www.php.net/ChangeLog-8.php">ChangeLog</a>'a göz atabilirsiniz.
489      </p>
490      <p>
491        PHP Kılavuzundan PHP 8 için <a href="/manual/tr/migration80.php">Göç Belgelerine</a> ulaşabilirsiniz.
492        Yeni özellikler ve geriye dönük uyumluluğu etkileyecek değişikliklerin ayrıntılı listesi için göç belgesini inceleyiniz.
493      </p>
494    </div>
495  </div>
496</section>
497
498
499
500
501<?php site_footer();
502