Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:123690 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by qa.php.net (Postfix) with ESMTPS id 9DC281A009C for ; Thu, 20 Jun 2024 03:02:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1718852600; bh=Bb0k78utrVuTrjGjjk3szz67E6sUmzeESmp9M+bCUBU=; h=From:To:Subject:Date:From; b=HKJWRKe/O7kEacCg7WfBPjbT9bMMzWoXIsHNQlt+xYdNlIzUTOcdC7kmm05fmLte9 Rtd3ZdCDkO06o3bGT22dI5mfK94ymxQWSz4MAarqGRAV/zRVP8Xbk53j8DS1+zaJQK YsGnNxteZNEr4YcoMDd5ceNVLPxvpdZQISd+3C50/mbcFKyl8+A64cSB9axEMc3yYr 2Dh0oG3J0JDSvbG6yeKn7ByEoc0YlyBjz4ZZi1zK8Gok0q4pqM3ceyTfy8lU9/XvQc vzGER+qUfjenNZKZq15tWAnMbKBI8rB+mHBquO+iIssmVN1tIVJNm/ioHrIfNz0vvz LSO/7S8txssww== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 2300A18004B for ; Thu, 20 Jun 2024 03:03:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Thu, 20 Jun 2024 03:03:16 +0000 (UTC) Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-6c386a3ac43so54907a12.0 for ; Wed, 19 Jun 2024 20:02:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718852522; x=1719457322; darn=lists.php.net; h=mime-version:msip_labels:content-language:accept-language :message-id:date:thread-index:thread-topic:subject:to:from:from:to :cc:subject:date:message-id:reply-to; bh=Bb0k78utrVuTrjGjjk3szz67E6sUmzeESmp9M+bCUBU=; b=GubarJq+GTH6JyKEWQHEV6e1AJ7puN5WRw4mqgM4wKcsCgOJXtGxnKQkXiZtnedifb h6e12+LMHUf/BnPCgUhkkrfsXJ77QUTlVYM2WozPh5vi6xXPDPZtNcStTg4RgN/3LQjB 5OLSvoDuj8eZGWeEhgYFKq2Wwj+0mCQpDISzt3WaXXbSfpeCkVj+wLBkB9f3I8iRpIUs dsmP/YzyvAlYPx4APRScCVAuJmROyKMNvQLcrfX4vGmjWeQyJ8gnJKkRKhQvtJhoIIcu f8GPp41yvbZSiJnfY+hcQzzA1d/+OO6yT54NnXjNxqeYqbb/9V3XN8VkTBttrx63wqK2 vZkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718852522; x=1719457322; h=mime-version:msip_labels:content-language:accept-language :message-id:date:thread-index:thread-topic:subject:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Bb0k78utrVuTrjGjjk3szz67E6sUmzeESmp9M+bCUBU=; b=AL+RlQQRt89haJcE3d8tp4LmcSPnt9FIhwKsH/FHRVnD6YNcAdIFF2zmk4y9v6WDNG KsocbsdwfHoX0YACgoblaVuobCbMbQofCFPZ2EVC9RMvjOLbFlevns025AeJf7JovVjr HTB53mujoIkQ+cLUNrAT4dIQpCYKkG0pomNfq1VDzGbhW/ZRLQTjCK+KOTFC/TFAEovA G1jBbwLd//yNxirXjEuAdnuACrfAjGBfqwTO1IL0603HKfxfN1yt+ACVtKVAJZGu/KlD 03bg0c7JyIDoBfO7vQ7QJ8IgqlM2T4wNlBpeLjUyAczbVTWrq+txLP9kRgaVExeTW6Df imag== X-Gm-Message-State: AOJu0YygdLNJ7fjJJIkDsGdtgXoYepS2v/WITrnE63DdRKEG6boxqlft aRfSyh//D4JmE4LTJkCm8I18OVjoBZUek5EBPZc3k621orcS7nzbHcLmSw== X-Google-Smtp-Source: AGHT+IFqB2OzNMoWd9oD6uxYGN5CF6Emil0Xw7TAsUNysJ+y5xjig9WA2xioQOeHPJwphn3XA0eGtg== X-Received: by 2002:a05:6a20:12d4:b0:1b7:571d:3d02 with SMTP id adf61e73a8af0-1bcbb8c4127mr4033733637.5.1718852521332; Wed, 19 Jun 2024 20:02:01 -0700 (PDT) Received: from TYWP286MB2251.JPNP286.PROD.OUTLOOK.COM ([2603:1046:c09:38::5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1f9c464f3a1sm7095805ad.121.2024.06.19.20.02.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Jun 2024 20:02:00 -0700 (PDT) To: "internals@lists.php.net" Subject: [PHP-DEV] FFI::new(), FFI::type(), FFI::cast() statically RFC is stupid implementation Thread-Topic: FFI::new(), FFI::type(), FFI::cast() statically RFC is stupid implementation Thread-Index: AQHawr3AQUllAdiBrEi5G5lYKsqtsA== X-MS-Exchange-MessageSentRepresentingType: 1 Date: Thu, 20 Jun 2024 03:01:58 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-Exchange-Organization-SCL: -1 X-MS-TNEF-Correlator: X-MS-Exchange-Organization-RecordReviewCfmType: 0 msip_labels: Content-Type: multipart/alternative; boundary="_000_TYWP286MB2251D09C79295CA010564C42F2C82TYWP286MB2251JPNP_" Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net MIME-Version: 1.0 From: chopins.xiao@gmail.com (chopins xiao) --_000_TYWP286MB2251D09C79295CA010564C42F2C82TYWP286MB2251JPNP_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGF2ZW4ndCBiZWVuIHBheWluZyBhdHRlbnRpb24gZm9yIGEgd2hpbGUgYW5kIGZvdW5kIHRoYXQg RkZJOjpuZXcoKSwgRkZJOjp0eXBlKCksIEZGSTo6Y2FzdCgpc3RhdGljYWxseSBhcmUgbWFya2Vk IGFzIGRlcHJlY2F0ZWQsIHdoaWNoIGlzIGEgYmFkIGltcGxlbWVudGF0aW9uLg0KU3VnZ2VzdGlu ZyBpbiBSRkM6aHR0cHM6Ly93aWtpLnBocC5uZXQvcmZjL2RlcHJlY2F0ZV9mdW5jdGlvbnNfd2l0 aF9vdmVybG9hZGVkX3NpZ25hdHVyZXMjZmZpY2FzdF9mZmluZXdfYW5kX2ZmaXR5cGUgdGhhdCB5 b3Ugc2hvdWxkIHJlcGxhY2Ugc3RhdGljIGNhbGxzIHdpdGggaW5zdGFuY2VzIGlzIGEgc3R1cGlk IHN1Z2dlc3Rpb24uIFRoaXMgUkZDIHdhcyBpbXBsZW1lbnRlZCBvbiBKdWx5IDE4LCAyMDIzIGlu IGh0dHBzOi8vZ2l0aHViLmNvbS9waHAvcGhwLXNyYy9jb21taXQvNGFjZjAwODRkY2Q2M2VjMzY5 YTYxMGVjOTY2ZGIzM2YzMjI2OTRjOC4gT24gdGhpcyBpc3N1ZSwgSSBzdWJtaXR0ZWQgYSBwcm9w b3NhbCBvbiBNYXkgMTQsIDIwMjIgaHR0cHM6Ly9naXRodWIuY29tL3BocC9waHAtc3JjL2lzc3Vl cy84NTU0IGhlcmUuDQoNCkhlcmUncyB3aHkgaXQncyBub3QgYWR2aXNhYmxlIHRvIHJlbW92ZSBz dGF0aWM6DQoNCiAgMS4gIFRoZSBub24tc3RhdGljIGNhbGwgdGhyb3VnaCB0aGUgRkZJIGluc3Rh bmNlIGlzIHRoZSBDIGZ1bmN0aW9uLCBhbmQgdGhlIG5ldygpLCB0eXBlKCksIGNhc3QoKSBhcmUg UEhQIGNsYXNzIG1ldGhvZHMsIHdoaWNoIGlzIGEgdmVyeSBzdHJhbmdlIEFQSSBpbXBsZW1lbnRh dGlvbiwgYW5kIHRoZXNlIHRocmVlIGZ1bmN0aW9uIG5hbWVzIG9jY3VweSB0aGUgQyBmdW5jdGlv biB0aGF0IG1heSBleGlzdC4gQWxzbywgdGhlIGZ1bmN0aW9uIHplbmRfZmZpX2dldF9mdW5jIGlt cGxlbWVudGF0aW9uIGluIGZmaS5jIGlzIG5vdCBzbyBnb29kIG9uIGl0cyBvd24uDQogIDIuICBX aGVuIHlvdSBuZWVkIHRvIGdldCBub24tUEhQIHR5cGUgZGF0YSwgeW91IGNhbiBnZXQgaXQgZGly ZWN0bHkgdGhyb3VnaCBzdGF0aWMgbmV3IHdpdGhvdXQgZ2V0dGluZyBhbiBGRkkgb2JqZWN0IGlu c3RhbmNlIGZpcnN0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHVzaW5nIG9ubHkgQyBwcmltaXRpdmUg ZGF0YSB0eXBlcywgd2l0aG91dCB0aGlua2luZyBhYm91dCBwZXJmb3JtYW5jZSwgYW5kIHdpdGhv dXQgY2FsbGluZyBDIGxpYnJhcmllcy4NCiAgMy4gIFBIUCBwcm9ncmFtbWVycyBhcmVuJ3QgYWxs IGZvb2xzLCBQSFAgcHJvZ3JhbW1lcnMgd2hvIGNhbiB1c2UgdGhlIEZGSSBpbnRlcmZhY2UgbXVz dCBoYXZlIHRoZSByZWxldmFudCBza2lsbHMuDQoNCg== --_000_TYWP286MB2251D09C79295CA010564C42F2C82TYWP286MB2251JPNP_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable
Haven't been paying attention for a while and found that FFI::new(), FFI::type(), FFI::cast()statically are marke= d as deprecated, which is a bad implementation.
Suggesting in RFC:https://wi= ki.php.net/rfc/deprecate_functions_with_overloaded_signatures#fficast_ffine= w_and_ffitype that you should replace static calls with instances is a stupid suggestion. Thi= s RFC was implemented on July 18, 2023 in https://github.com/php/php-src/commit/4acf0084dcd63ec369a610ec966db33f32269= 4c8. On this issue, I submitted a proposal on May 14, 2022 h= ttps://github.com/php/php-src/issues/8554 here.

Here's why it's not advisable to remove static:
  1. The non-static call through the FFI instance is the= C function, and the new(), type(), cast() are PHP class = methods, which is a very strange API implementation, and these three functi= on names occupy the C function that may exist. Also, the function zend_ffi_get_func implementation in ffi.c&nb= sp;is not so good on its own.
  2. When you need to get non-PHP type data, you can get= it directly through static new without getting an FFI object instance first. This is usef= ul when using only C primitive data types, without thinking about performan= ce, and without calling C libraries.
  3. PHP programmers aren't all fools, PHP programmers w= ho can use the FFI interface must have the relevant skills.

  4. --_000_TYWP286MB2251D09C79295CA010564C42F2C82TYWP286MB2251JPNP_--