Jadual Kandungan
kita boleh mencapai ini dalam dua langkah:
Tindakan pengawal
templat indeks
Langkah seterusnya adalah memberikan cadangan kepada profil. Kami perlu sedikit memperluaskan pertanyaan Cypher kami di pengawal dengan menambahkan perlawanan pilihan untuk mencari cadangan berdasarkan rangkaian ijazah kedua.
pangkalan data graf adalah sesuai untuk data relasi, dan menggunakannya dengan PHP dan neoclient adalah mudah.
Apa itu Neo4J dan mengapa ia penting dalam aplikasi PHP? Adalah penting dalam aplikasi PHP kerana ia membolehkan pemaju menyimpan, mengurus, dan menanyakan data dengan model data grafnya. Dengan NEO4J, anda boleh mengendalikan dan menganalisis jumlah data yang tinggi dalam masa nyata, menjadikannya sesuai untuk membina ciri rangkaian sosial dalam aplikasi PHP.
Apakah ciri -ciri baru dalam Php 7.4, 8.1, dan 8.3 yang dapat meningkatkan aplikasi saya? Php 8.1 membawa enum, serat, dan sifat baca sahaja. Php 8.3, walaupun belum dibebaskan, dijangka memperkenalkan ciri -ciri baru yang akan meningkatkan lagi permohonan anda. Ciri -ciri ini dapat meningkatkan prestasi, kebolehbacaan, dan pemeliharaan aplikasi PHP anda. Menggunakan NEO4J melibatkan membuat pangkalan data graf, menentukan hubungan antara nod, dan menanyakan pangkalan data. Anda boleh menggunakan bahasa pertanyaan Cypher, Neo4J, untuk berinteraksi dengan pangkalan data graf dari aplikasi PHP anda. Pangkalan data graf, sememangnya lebih sesuai untuk ciri rangkaian sosial daripada jenis pangkalan data lain. Ia membolehkan pertanyaan dan pengendalian hubungan yang kompleks, yang biasa berlaku dalam rangkaian sosial. Ia juga menyediakan prestasi tinggi, skalabiliti, dan fleksibiliti.
Di mana saya boleh mencari sumber untuk mengetahui lebih lanjut mengenai menggunakan NEO4J dengan PHP? Terdapat juga banyak kursus, buku, dan blog dalam talian yang merangkumi topik ini secara mendalam.
Rumah pembangunan bahagian belakang tutorial php Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Feb 18, 2025 am 08:59 AM

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Pada bahagian terakhir, kami belajar tentang Neo4J dan cara menggunakannya dengan PHP. Dalam jawatan ini, kami akan menggunakan pengetahuan itu untuk membina aplikasi rangkaian sosial yang berkuasa Silex dengan pangkalan data graf.

Takeaways Key

Saya akan menggunakan silex, ranting, bootstrap dan neoclient untuk membina aplikasi.

Buat direktori untuk aplikasinya. Saya menamakan spsocial saya.

Tambahkan baris ini ke komposer.json anda dan jalankan komposer Pasang untuk memasang kebergantungan:

anda boleh memuat turun dan memasang bootstrap ke folder web/aset projek anda.

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
anda boleh mencari aplikasi demo bootstrap di sini juga: https://github.com/sitepoint-editors/social-network

Sediakan aplikasi Silex

kita perlu mengkonfigurasi silex dan mengisytiharkan Neo4JClient supaya ia boleh didapati dalam aplikasi Silex. Buat fail index.php di web/ folder projek anda:

Twig dikonfigurasikan untuk mempunyai fail templat yang terletak di folder SRC/Views.

Laluan rumah yang menunjuk kepada / didaftarkan dan dikonfigurasikan untuk menggunakan WebController yang akan kami buat kemudian.
<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Struktur aplikasi harus kelihatan seperti ini:



Perhatikan bahawa di sini saya menggunakan Bower untuk memasang bootstrap, tetapi terpulang kepada anda apa yang anda mahu gunakan.

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J Langkah seterusnya adalah untuk membuat susun atur asas kami dengan blok kandungan bahawa templat twig anak kami akan ditimpa dengan kandungan mereka sendiri.

Saya akan mengambil tema bootstrap lalai dengan navbar di atas:

halaman rumah (mengambil semua pengguna)

Setakat ini, kami mempunyai NEO4J yang terdapat dalam aplikasi, template asas kami dibuat dan kami ingin menyenaraikan semua pengguna di halaman utama.
<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

kita boleh mencapai ini dalam dua langkah:

  • Buat tindakan pengawal rumah kami dan dapatkan pengguna dari neo4j
  • lulus senarai pengguna ke templat dan senaraikannya

Tindakan pengawal

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pengawal menunjukkan proses, kami mengambil perkhidmatan NEO dan mengeluarkan pertanyaan cypher untuk mengambil semua pengguna.
Koleksi Pengguna kemudian diluluskan ke templat indeks.html.twig.

templat indeks

<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Template sangat ringan, ia memanjangkan susun atur asas kami dan menambah senarai yang tidak disusun dengan nama pertama pengguna dan nama -nama last dalam blok yang diwarisi kandungan.

Mulakan pelayan PHP terbina dalam dan mengagumi kerja anda:

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Ciri Rangkaian Sosial: Menunjukkan siapa pengguna mengikuti

katakan sekarang bahawa kami ingin mengklik pada pengguna, dan menyampaikan maklumat terperinci dan pengguna yang dia ikuti.

Langkah 1: Buat laluan di index.php

<span><span><?php
</span></span><span>
</span><span><span>namespace Ikwattro<span>\SocialNetwork\Controller</span>;
</span></span><span>
</span><span><span>use Silex<span>\Application</span>;
</span></span><span><span>use Symfony<span>\Component\HttpFoundation\Request</span>;
</span></span><span>
</span><span><span>class WebController
</span></span><span><span>{
</span></span><span>
</span><span>    <span>public function home(Application $application, Request $request)
</span></span><span>    <span>{
</span></span><span>        <span>$neo = $application['neo'];
</span></span><span>        <span>$q = 'MATCH (user:User) RETURN user';
</span></span><span>        <span>$result = $neo->sendCypherQuery($q)->getResult();
</span></span><span>
</span><span>        <span>$users = $result->get('user');
</span></span><span>
</span><span>        <span>return $application['twig']->render('index.html.twig', array(
</span></span><span>            <span>'users' => $users
</span></span><span>        <span>));
</span></span><span>    <span>}
</span></span><span><span>}</span></span>
Salin selepas log masuk
Salin selepas log masuk
Langkah 2: Buat tindakan pengawal showUser

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>        {% for user in users %}
            <span><span><span><li</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></li</span>></span>
</span>        {% endfor %}
    <span><span><span></ul</span>></span>
</span>{% endblock %}
Salin selepas log masuk
Salin selepas log masuk
Aliran kerja adalah serupa dengan mana -mana aplikasi lain, anda cuba mencari pengguna berdasarkan log masuk.

Sekiranya tidak wujud, anda menunjukkan halaman ralat 404, jika tidak, anda lulus data pengguna ke templat.

Langkah 3: Buat fail templat Show_user

<span>cd spsocial/web
</span>php <span>-S localhost:8000
</span><span>open localhost:8000</span>
Salin selepas log masuk
Langkah 4: Refactor Senarai pengguna di laman utama untuk menunjukkan pautan ke profil mereka

<span>$app->get('/user/{login}', 'Ikwattro\SocialNetwork\Controller\WebController::showUser')
</span>    <span>->bind('show_user');</span>
Salin selepas log masuk
menyegarkan laman web dan klik pada mana -mana pengguna untuk menunjukkan profilnya dan senarai pengguna yang diikuti

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J Menambah cadangan

Langkah seterusnya adalah memberikan cadangan kepada profil. Kami perlu sedikit memperluaskan pertanyaan Cypher kami di pengawal dengan menambahkan perlawanan pilihan untuk mencari cadangan berdasarkan rangkaian ijazah kedua.

awalan pilihan menyebabkan perlawanan untuk mengembalikan baris walaupun tidak ada perlawanan tetapi dengan bahagian yang tidak diselesaikan ditetapkan ke batal (sama seperti gabungan luar). Memandangkan kami berpotensi mendapatkan pelbagai laluan untuk setiap rakan-rakan (FOF), kami perlu membezakan hasilnya untuk mengelakkan pendua dalam senarai kami (mengumpul adalah operasi agregasi yang mengumpul nilai ke dalam array):

pengawal yang dikemas kini:

templat yang dikemas kini:
<span>public function showUser(Application $application, Request $request, $login)
</span>    <span>{
</span>        <span>$neo = $application['neo'];
</span>        <span>$q = 'MATCH (user:User) WHERE user.login = {login}
</span><span>         OPTIONAL MATCH (user)-[:FOLLOWS]->(f)
</span><span>         RETURN user, collect(f) as followed';
</span>        <span>$p = ['login' => $login];
</span>        <span>$result = $neo->sendCypherQuery($q, $p)->getResult();
</span>
        <span>$user = $result->get('user');
</span>        <span>$followed = $result->get('followed');
</span>
        <span>if (null === $user) {
</span>            <span>$application->abort(404, 'The user $login was not found');
</span>        <span>}
</span>
        <span>return $application['twig']->render('show_user.html.twig', array(
</span>            <span>'user' => $user,
</span>            <span>'followed' => $followed
</span>        <span>));
</span>    <span>}</span>
Salin selepas log masuk

anda boleh meneroka cadangan dengan segera dalam aplikasi anda:
{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><h1</span>></span>User informations<span><span></h1</span>></span>
</span>
    <span><span><span><h2</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></h2</span>></span>
</span>    <span><span><span><h3</span>></span>{{ user.property('login') }}<span><span></h3</span>></span>
</span>    <span><span><span><hr</span>/></span>
</span>
    <span><span><span><div</span> class<span>="row"</span>></span>
</span>        <span><span><span><div</span> class<span>="col-sm-6"</span>></span>
</span>            <span><span><span><h4</span>></span>User <span><span><span</span> class<span>="label label-info"</span>></span>{{ user.property('login') }}<span><span></span</span>></span> follows :<span><span></h4</span>></span>
</span>            <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>                {% for follow in followed %}
                    <span><span><span><li</span>></span>{{ follow.property('login') }} ( {{ follow.property('firstname') }} {{ follow.property('lastname') }} )<span><span></li</span>></span>
</span>                {% endfor %}
            <span><span><span></ul</span>></span>
</span>        <span><span><span></div</span>></span>
</span>    <span><span><span></div</span>></span>
</span>
{% endblock %}
Salin selepas log masuk

menyambung ke pengguna (menambah hubungan) Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Untuk menyambung ke pengguna yang dicadangkan, kami akan menambah pautan borang pos kepada setiap pengguna yang dicadangkan yang mengandungi kedua -dua pengguna sebagai medan tersembunyi. Kami juga akan membuat tindakan laluan dan pengawal yang sepadan.

Membuat laluan:

tindakan pengawal:

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Tidak ada yang luar biasa di sini, kami sepadan dengan nod pengguna Start dan nod pengguna sasaran dan kemudian kami menggabungkan hubungan berikut yang sama. Kami menggunakan penggabungan hubungan untuk mengelakkan penyertaan pendua.

Templat:

<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Anda kini boleh mengklik butang ikuti pengguna yang dicadangkan yang ingin anda ikuti:

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Mengeluarkan hubungan:

aliran kerja untuk menghilangkan hubungan adalah sama seperti untuk menambah hubungan baru, membuat laluan, tindakan pengawal dan menyesuaikan susun atur:

Laluan:

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
tindakan pengawal:

<span><span><?php
</span></span><span>
</span><span><span>namespace Ikwattro<span>\SocialNetwork\Controller</span>;
</span></span><span>
</span><span><span>use Silex<span>\Application</span>;
</span></span><span><span>use Symfony<span>\Component\HttpFoundation\Request</span>;
</span></span><span>
</span><span><span>class WebController
</span></span><span><span>{
</span></span><span>
</span><span>    <span>public function home(Application $application, Request $request)
</span></span><span>    <span>{
</span></span><span>        <span>$neo = $application['neo'];
</span></span><span>        <span>$q = 'MATCH (user:User) RETURN user';
</span></span><span>        <span>$result = $neo->sendCypherQuery($q)->getResult();
</span></span><span>
</span><span>        <span>$users = $result->get('user');
</span></span><span>
</span><span>        <span>return $application['twig']->render('index.html.twig', array(
</span></span><span>            <span>'users' => $users
</span></span><span>        <span>));
</span></span><span>    <span>}
</span></span><span><span>}</span></span>
Salin selepas log masuk
Salin selepas log masuk
Anda dapat melihat di sini bahawa saya menggunakan perlawanan untuk mencari hubungan antara kedua -dua pengguna,

Dan saya menambah pengenal berikut kepada hubungan yang dapat memadamkannya.

Templat:

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>        {% for user in users %}
            <span><span><span><li</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></li</span>></span>
</span>        {% endfor %}
    <span><span><span></ul</span>></span>
</span>{% endblock %}
Salin selepas log masuk
Salin selepas log masuk
Anda kini boleh mengklik butang Keluarkan Hubungan di bawah setiap pengguna yang diikuti:

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J Kesimpulan

pangkalan data graf adalah sesuai untuk data relasi, dan menggunakannya dengan PHP dan neoclient adalah mudah.

Cypher adalah bahasa pertanyaan yang mudah anda akan cepat suka, kerana ia memungkinkan untuk menanyakan graf anda dengan cara yang semula jadi.


Terdapat banyak manfaat daripada menggunakan pangkalan data graf untuk data dunia sebenar,

Saya menjemput anda untuk mengetahui lebih lanjut dengan membaca manual http://neo4j.com/docs/stable/,

Memandangkan kes penggunaan dan contoh yang dibekalkan oleh pengguna NEO4J dan mengikuti @NEO4J di Twitter.

Soalan Lazim mengenai Menambah Ciri Rangkaian Sosial ke App PHP Dengan Neo4J

Apa itu Neo4J dan mengapa ia penting dalam aplikasi PHP? Adalah penting dalam aplikasi PHP kerana ia membolehkan pemaju menyimpan, mengurus, dan menanyakan data dengan model data grafnya. Dengan NEO4J, anda boleh mengendalikan dan menganalisis jumlah data yang tinggi dalam masa nyata, menjadikannya sesuai untuk membina ciri rangkaian sosial dalam aplikasi PHP.

Untuk memasang NEO4J, anda perlu memuat turun versi terkini dari laman web rasmi dan ikuti arahan pemasangan. Sebaik sahaja dipasang, anda boleh mengkonfigurasinya dengan mengedit fail konfigurasi, biasanya terletak di direktori 'conf' pemasangan NEO4J anda. Anda kemudian boleh menyambungkannya ke aplikasi PHP anda menggunakan klien PHP NEO4J.

Apakah ciri -ciri baru dalam Php 7.4, 8.1, dan 8.3 yang dapat meningkatkan aplikasi saya? Php 8.1 membawa enum, serat, dan sifat baca sahaja. Php 8.3, walaupun belum dibebaskan, dijangka memperkenalkan ciri -ciri baru yang akan meningkatkan lagi permohonan anda. Ciri -ciri ini dapat meningkatkan prestasi, kebolehbacaan, dan pemeliharaan aplikasi PHP anda. Menggunakan NEO4J melibatkan membuat pangkalan data graf, menentukan hubungan antara nod, dan menanyakan pangkalan data. Anda boleh menggunakan bahasa pertanyaan Cypher, Neo4J, untuk berinteraksi dengan pangkalan data graf dari aplikasi PHP anda. Pangkalan data graf, sememangnya lebih sesuai untuk ciri rangkaian sosial daripada jenis pangkalan data lain. Ia membolehkan pertanyaan dan pengendalian hubungan yang kompleks, yang biasa berlaku dalam rangkaian sosial. Ia juga menyediakan prestasi tinggi, skalabiliti, dan fleksibiliti.

Bagaimana saya boleh memindahkan aplikasi PHP saya ke versi yang lebih baru? Kod anda untuk mengalih keluar ciri -ciri yang telah ditetapkan dan menggunakan yang baru, dan menguji aplikasi anda untuk memastikan ia berfungsi dengan betul. Adalah disyorkan untuk melakukan ini dalam persekitaran pembangunan terlebih dahulu sebelum menggunakan perubahan kepada persekitaran pengeluaran. 🎜> Beberapa cabaran umum termasuk mengendalikan jumlah data yang besar, menguruskan hubungan kompleks, dan memastikan prestasi masa nyata. Ini dapat diatasi dengan menggunakan pangkalan data yang sesuai seperti neo4j, mengoptimumkan pertanyaan anda, dan menggunakan struktur data dan algoritma yang cekap. Boleh mengoptimumkan prestasi aplikasi PHP anda dengan NEO4J dengan menggunakan pertanyaan yang cekap, mengindeks data anda, dan menggunakan ciri penalaan prestasi NEO4J yang dibina. Anda juga boleh menggunakan ciri-ciri peningkatan prestasi PHP, seperti penyusunan JIT dan preloading. sambungan, melaksanakan pengesahan dan kebenaran, dan menggunakan ciri keselamatan yang dibina oleh NEO4J. Anda juga harus mengikuti amalan terbaik untuk keselamatan PHP, seperti mengesahkan input, menggunakan pernyataan yang disediakan, dan menjaga pemasangan PHP anda terkini.

Di mana saya boleh mencari sumber untuk mengetahui lebih lanjut mengenai menggunakan NEO4J dengan PHP? Terdapat juga banyak kursus, buku, dan blog dalam talian yang merangkumi topik ini secara mendalam.

Atas ialah kandungan terperinci Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1652
14
Tutorial PHP
1251
29
Tutorial C#
1224
24
Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Apakah penghitungan (enums) dalam Php 8.1? Apakah penghitungan (enums) dalam Php 8.1? Apr 03, 2025 am 12:05 AM

Fungsi penghitungan dalam Php8.1 meningkatkan kejelasan dan jenis keselamatan kod dengan menentukan pemalar yang dinamakan. 1) Penghitungan boleh menjadi bilangan bulat, rentetan atau objek, meningkatkan kebolehbacaan kod dan keselamatan jenis. 2) Penghitungan adalah berdasarkan kelas dan menyokong ciri-ciri berorientasikan objek seperti traversal dan refleksi. 3) Penghitungan boleh digunakan untuk perbandingan dan tugasan untuk memastikan keselamatan jenis. 4) Penghitungan menyokong penambahan kaedah untuk melaksanakan logik kompleks. 5) Pemeriksaan jenis dan pengendalian ralat yang ketat boleh mengelakkan kesilapan biasa. 6) Penghitungan mengurangkan nilai sihir dan meningkatkan keupayaan, tetapi memberi perhatian kepada pengoptimuman prestasi.

Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Apr 03, 2025 am 12:04 AM

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Apr 06, 2025 am 12:02 AM

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah Prinsip Reka Bentuk API REST? Apakah Prinsip Reka Bentuk API REST? Apr 04, 2025 am 12:01 AM

Prinsip reka bentuk Restapi termasuk definisi sumber, reka bentuk URI, penggunaan kaedah HTTP, penggunaan kod status, kawalan versi, dan benci. 1. Sumber harus diwakili oleh kata nama dan dikekalkan pada hierarki. 2. Kaedah HTTP harus mematuhi semantik mereka, seperti GET digunakan untuk mendapatkan sumber. 3. Kod status hendaklah digunakan dengan betul, seperti 404 bermakna sumber tidak wujud. 4. Kawalan versi boleh dilaksanakan melalui URI atau header. 5. Boots Operasi Pelanggan Hateoas melalui pautan sebagai tindak balas.

Bagaimanakah anda mengendalikan pengecualian dengan berkesan dalam PHP (cuba, menangkap, akhirnya, membuang)? Bagaimanakah anda mengendalikan pengecualian dengan berkesan dalam PHP (cuba, menangkap, akhirnya, membuang)? Apr 05, 2025 am 12:03 AM

Dalam PHP, pengendalian pengecualian dicapai melalui percubaan, menangkap, akhirnya, dan membuang kata kunci. 1) blok percubaan mengelilingi kod yang boleh membuang pengecualian; 2) Blok tangkapan mengendalikan pengecualian; 3) Akhirnya Blok memastikan bahawa kod itu sentiasa dilaksanakan; 4) Lemparan digunakan untuk membuang pengecualian secara manual. Mekanisme ini membantu meningkatkan keteguhan dan mengekalkan kod anda.

Apakah kelas tanpa nama di PHP dan kapan anda boleh menggunakannya? Apakah kelas tanpa nama di PHP dan kapan anda boleh menggunakannya? Apr 04, 2025 am 12:02 AM

Fungsi utama kelas tanpa nama dalam PHP adalah untuk membuat objek satu kali. 1. Kelas tanpa nama membenarkan kelas tanpa nama ditakrifkan secara langsung dalam kod, yang sesuai untuk keperluan sementara. 2. Mereka boleh mewarisi kelas atau melaksanakan antara muka untuk meningkatkan fleksibiliti. 3. Beri perhatian kepada prestasi dan kebolehbacaan kod apabila menggunakannya, dan elakkan berulang kali menentukan kelas tanpa nama yang sama.

See all articles